Wie benutzt man jni im Funke?



title tag länge (1)

Ich möchte jni verwenden, um meine c ++ lib in Spark aufzurufen. Wenn ich mein Programm starte, zeigt es, dass java.lang.UnsatisfiedLinkError: kein hq_Image_Process in java.library.path, so offensichtlich kann das Programm meine hq_Image_Process.so nicht finden.

In hadoop können -files die xxx.so-Datei wie folgt an die Slaves verteilen:

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

Gibt es irgendwelche Möglichkeiten, meinen hq_Image_Process.so wie hadoop in spark aufzurufen? Ich würde jede Hilfe schätzen.


Zuallererst muss die native Bibliothek auf allen Arbeiterknoten vorinstalliert sein. Der Pfad zu dieser Bibliothek muss in spark-env.sh angegeben spark-env.sh :

export SPARK_LIBRARY_PATH=/path/to/native/library

SPARK_PRINT_LAUNCH_COMMAND Umgebungsvariable SPARK_PRINT_LAUNCH_COMMAND könnte zur Diagnose verwendet werden:

export SPARK_PRINT_LAUNCH_COMMAND=1

Wenn alles korrekt eingestellt ist, sehen Sie eine Ausgabe wie folgt:

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