2016-07-15 1 views
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

ответ

0

Это выглядит ваша банка включает библиотеки Spark/Hadoop, которые конфликтуют с другими библиотеками в кластере. Убедитесь, что ваши зависимости Spark и Hadoop отмечены как указано.

+0

Не могли бы вы подробнее рассказать о своем ответе? и нашли что-то подобное на https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Override-libraries-for-spark/mp/32146#M1142 – Vishnu667

+0

Как-то ваша банка переопределяет внутренние библиотеки Cloudera, например '' 'живо-java'''. Это заставляет внутренний процесс жаловаться, потому что они ожидают своих собственных библиотек. Или, может быть, на порядок в классеpath влияет флаг '' 'userClassPathFirst'', помните, что он« экспериментальный »(http://spark.apache.org/docs/latest/configuration.html). –