我是EMR和Spark Hadoop集群的新手。 我必须在运行时为我的可执行文件xyz_spark.jar加载本机 abcd_linux.so 库。所有JAR,本机库和引导程序文件都将上传到s3存储桶( spark-bucket ),如下所示:-
s3://spark-bucket/bootstrap/xyz_spark.jar
s3://spark-bucket/bootstrap/bootstrap_action.sh
s3://spark-bucket/bootstrap/linux/abcd_linux.so
其中 bootstrap_action.sh 就像
#!/bin/bash
export LD_LIBRARY_PATH=/home/hadoop/linux
aws s3 cp s3://spark-bucket/bootstrap/ /home/hadoop --recursive
ls -l /home/hadoop
加载 abcd_linux.so 的类/代码如下所示
val os = System.getProperty("os.name")
logger.info("Current OS is "+os)
println("Current OS is "+os)
if(os.toLowerCase().contains("windows")){
System.loadLibrary("abcd_win")
}else{
System.loadLibrary("abcd_linux")
}
然后将JAVA_OPTIONS传递给应用,如下所示:-
"--driver-java-options", "-Dcontext=dev/app_dev_steps.json -XX:-UseGCOverheadLimit -Dlog4j.configuration=/home/hadoop/log4j.xml -DLD_LIBRARY_PATH=/home/hadoop/linux",
但是库未加载,无法找到任何适当的文档步骤来加载本机库。