usar nativos metodos jni apache-spark java.library.path

jni - usar - metodos nativos en java



cómo usar jni en chispa? (1)

Quiero usar jni para llamar a mi c ++ lib en chispa. Cuando ejecuto mi programa, muestra que java.lang.UnsatisfiedLinkError: no hq_Image_Process en java.library.path, por lo que obviamente el programa no puede encontrar mi hq_Image_Process.so.

En hadoop, los archivos pueden distribuir el archivo xxx.so a los esclavos de esta manera:

[hadoop@Master ~]$ hadoop jar JniTest3.jar -files /home/hadoop/Documents/java/jni1/bin/libFakeSegmentForJni.so FakeSegmentForJni.TestFakeSegmentForJni input output

¿Hay alguna forma de llamar a mi hq_Image_Process.so como hadoop en chispa? Apreciaría cualquier ayuda.


En primer lugar, la biblioteca nativa debe estar preinstalada en todos los nodos de trabajadores. La ruta a esa biblioteca debe especificarse en spark-env.sh :

export SPARK_LIBRARY_PATH=/path/to/native/library

SPARK_PRINT_LAUNCH_COMMAND variable de entorno SPARK_PRINT_LAUNCH_COMMAND se puede usar para diagnosticarla:

export SPARK_PRINT_LAUNCH_COMMAND=1

Si todo está configurado correctamente, verá resultados como este:

Spark Command: /path/to/java -cp <long list of jars> -Djava.library.path=/path/to/native/library <etc> ========================================