2014-01-14 3 views
5

jni를 사용하여 spark에서 내 C++ 라이브러리를 호출하고 싶습니다. 내 프로그램을 운영 할 때, java.lang.UnsatisfiedLinkError : java.library.path에 hq_Image_Process가 없다는 것을 보여주기 때문에 프로그램은 내 hq_Image_Process.so를 찾을 수 없습니다. 하둡에서spark에서 jni를 사용하는 방법?

, -files이 같은 노예로 xxx.so 파일을 배포 할 수 있습니다

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

는 스파크에서 하둡처럼 내 hq_Image_Process.so를 호출 할 수있는 방법이 있습니까? 도움을 주시면 감사하겠습니다.

답변

14

우선, 모든 작업자 노드에 기본 라이브러리가 사전 설치되어 있어야합니다. 해당 라이브러리 경로는 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> 
======================================== 
+3

안녕 산불, 나는 내 모든 libxxx.so를/usr/lib에 배포했다. 모든 것이 지금 괜찮은 것 같습니다. 고맙습니다 ~ – hequn8128

+0

환영합니다 :) – Wildfire

+0

모델을 다시 배포해야하는 경우 유용한 정보 – javadba

관련 문제