繁体   English   中英

在hadoop 2.7.4的自定义排序类中调用C函数,给出java.lang.UnsatisfiedLinkError

[英]calling a C function in customized sort class of hadoop 2.7.4 giving java.lang.UnsatisfiedLinkError

我自定义了hadoop的Sort函数,如下所示:

conf.set("map.sort.class", "custom_map_output.CustomQuickSort");

我可以使用CustomQuickSort实用程序对Hadoop进行键排序。 现在,我想调用C ++函数对键进行排序。 调用C ++函数时出现UnsatisfiedLinkError。 我的system.loadLibrary(“ XYZ”)被调用,因为当我提供了错误的库名时,会收到正确的错误消息。

如果我将CustomQuickSort做成一个独立程序,则可以很好地调用C ++函数,因此我的JNI设置是正确的,并作为独立Java程序的一部分进行了测试。

我已经设置LD_LIBRARY_PATH指向libXYZ.so所在的地方。 我还设置了以下内容(基于对类似问题的评论):

conf.set("mapreduce.map.env", "LD_LIBRARY_PATH=....")
conf.set("mapreduce.reduce.env", "LD_LIBRARY_PATH= ...")
conf.set("mapred.child.java.opts", "-Djava.library.path= ...")

这些都不起作用。

在此先感谢您的帮助。

我能够解决问题。 它与被调用函数的完整路径有关。 我已经与实际的Hadoop程序分开创建了HelloWorld.h / .cpp,因此完整路径不匹配。 一旦我解决了这个问题就解决了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM