2016-12-16 1 views
0

Der Hadoop-Cluster unserer Anwendung hat funke 1.5 installiert. Aufgrund spezifischer Anforderungen haben wir mit der Version 2.0.2 einen Funkenjob entwickelt. Wenn ich den Job an Garn weitergebe, verwende ich den Befehl --jars, um die Spark-Bibliotheken im Cluster zu überschreiben. Aber es ist immer noch nicht das scala Bibliotheksglas. Es wird ein Fehler ausgegeben, der besagt,Überschreiben der Funkenbibliotheken in der Funkensendung

ApplicationMaster: User class threw exception: java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object; 
java.lang.NoSuchMethodError: scala.Predef$.ArrowAssoc(Ljava/lang/Object;)Ljava/lang/Object; 
    at org.apache.spark.sql.SparkSession$Builder.config(SparkSession.scala:713) 
    at org.apache.spark.sql.SparkSession$Builder.appName(SparkSession.scala:704) 

Gibt es irgendwelche Ideen zum Überschreiben der Cluster-Bibliotheken während Spark übergeben?

Der Shell-Befehl, den ich verwende, um den Job zu senden, ist unten.

spark-submit \ 
    --jars test.jar,spark-core_2.11-2.0.2.jar,spark-sql_2.11-2.0.2.jar,spark-catalyst_2.11-2.0.2.jar,scala-library-2.11.0.jar \ 
    --class Application \ 
    --master yarn \ 
    --deploy-mode cluster \ 
    --queue xxx \ 
    xxx.jar \ 
    <params> 

Antwort

0

, die ziemlich einfach ist, - Garn nicht, welche Version von Funken schert Sie ausgeführt wird, wird es die Gläser vom Garn-Client zur Verfügung gestellt ausführen, die durch Funken verpackt vor. Dieser Prozess packt Ihr Application-Jar entlang der Spark-Bibliotheken.

Um Spark 2.0 statt der bereitgestellten 1.5 bereitzustellen, müssen Sie nur spark 2.0 auf dem Host installieren, von dem Sie Ihre Arbeit starten, z. Legen Sie in Ihrem Home-Verzeichnis YARN_CONF_DIR env vars so fest, dass es auf Ihr hadoop-conf verweist, und verwenden Sie dieses Spark-Submit.

Verwandte Themen