2016-07-15 5 views
0

ich SparkLauncher bin mit meiner Funke App von Java.The Code starten sieht aus wieGot UnsatisfiedLinkError wenn Start Spark-Programm von Java-Code

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(); 

jedes Mal, ich

bekam

User class threw exception: java.lang.UnsatisfiedLinkError: org.xerial.snappy.SnappyNative.maxCompressedLength(I)I

Antwort

0

Es sieht aus wie Ihr Jar enthält Spark/Hadoop-Bibliotheken, die Konflikte mit anderen Bibliotheken im Cluster haben. Überprüfen Sie, ob Ihre Spark- und Hadoop-Abhängigkeiten als bereitgestellt markiert sind.

+0

Können Sie Ihre Antwort näher erläutern? und etwas ähnliches auf https://community.cloudera.com/t5/Advanced-Analytics-Apache-Spark/Override-libraries-for-spark/mp/32146#M1142 gefunden – Vishnu667

+0

Irgendwie ist Ihr Glas überschreiben Cloudera inneren Bibliotheken, wie '' 'snappy-java'''. Dies beschwört den inneren Prozess, weil sie ihre eigenen Bibliotheken erwarten. Oder die Reihenfolge der Klassenpfade wird durch das Flag '' 'userClassPathFirst'' beeinflusst - denken Sie daran, dass es experimentell ist (http://spark.apache.org/docs/latest/configuration.html). –