0
Я использую SparkLauncher запустить мою свечу приложение из Java.The кода выглядитGot UnsatisfiedLinkError при запуске программы Спарк из Java кода
Map<String, String> envMap = new HashMap<>();
envMap.put("HADOOP_CONF_DIR","/etc/hadoop/conf");
envMap.put("JAVA_LIBRARY_PATH", "/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/hadoop/lib/native");
envMap.put("LD_LIBRARY_PATH", "/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/hadoop/lib/native");
envMap.put("SPARK_HOME","/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark");
envMap.put("DEFAULT_HADOOP_HOME","/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/hadoop");
envMap.put("SPARK_DIST_CLASSPATH","all jars under /opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/jars");
envMap.put("HADOOP_HOME","/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/hadoop");
SparkLauncher sparklauncher = new SparkLauncher(envMap)
.setAppResource("myapp.jar")
.setSparkHome("/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark/")
.setMainClass("spark.HelloSpark")
.setMaster("yarn-cluster")
.setConf(SparkLauncher.DRIVER_MEMORY, "2g")
.setConf("spark.driver.userClassPathFirst", "true")
.setConf("spark.executor.userClassPathFirst", "true").launch();
Каждый раз, когда я получил
User class threw exception: java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I
Не могли бы вы подробнее рассказать о своем ответе? и нашли что-то подобное на https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Override-libraries-for-spark/mp/32146#M1142 – Vishnu667
Как-то ваша банка переопределяет внутренние библиотеки Cloudera, например '' 'живо-java'''. Это заставляет внутренний процесс жаловаться, потому что они ожидают своих собственных библиотек. Или, может быть, на порядок в классеpath влияет флаг '' 'userClassPathFirst'', помните, что он« экспериментальный »(http://spark.apache.org/docs/latest/configuration.html). –