我想用jni在spark中调用我的c ++ lib.当我运行我的程序时,它显示java.lang.UnsatisfiedLinkError:java.library.path中没有hq_Image_Process,所以显然程序找不到我的hq_Image_Process.so.
在hadoop中,-files可以将xxx.so文件分发给slave,如下所示:
[hadoop@Master ~]$ hadoop jar JniTest3.jar -files /home/hadoop/Documents/java/jni1/bin/libFakeSegmentForJni.so FakeSegmentForJni.TestFakeSegmentForJni input output
有没有办法像火花中的hadoop一样调用我的hq_Image_Process.so?我将不胜感激任何帮助.
首先,必须在所有工作节点上预安装本机库.必须在以下位置指定该库的路径spark-env.sh
:
export SPARK_LIBRARY_PATH=/path/to/native/library
SPARK_PRINT_LAUNCH_COMMAND
环境变量可能用于诊断它:
export SPARK_PRINT_LAUNCH_COMMAND=1
如果一切设置正确,您将看到如下输出:
Spark Command: /path/to/java -cp <long list of jars> -Djava.library.path=/path/to/native/library <etc> ========================================