Ich habe versucht, spark-submit zur Arbeit mit org.apache.spark.sql.hive.HiveContext zu bekommen, aber ich komme immer mit java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning . Hier ist der Code, der in der letzten Zeile bricht:Wie erhält man den Submission-Hive-Kontext, der mit Tez und Garn funktioniert?
val sc = SparkContext.getOrCreate()
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)
Dies ist auf Hortonworks 2.3.4, mit Funken 1.5.2, 1.2.1 hive, hadoop 2.7.1 und 0.7.0 tez. Ich benutze Maven für alle Abhängigkeiten außer Datenkern, ich habe hive-site.xml und tez-site.xml im Argument --files von spark-submit. Hier ist der Tez bezogen Auszug aus meiner Pom:
<dependency>
<groupId>org.apache.tez</groupId>
<artifactId>tez-api</artifactId>
<version>${tez.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tez</groupId>
<artifactId>tez-dag</artifactId>
<version>${tez.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tez</groupId>
<artifactId>tez-common</artifactId>
<version>${tez.version}</version>
</dependency>
Dieser Code funktioniert ordnungsgemäß in Spark Shell. Irgendein Rat?
Ich konnte nicht verstehen, da Sie Spark verwenden, warum tez verwenden? Spark könnte alle Aufgaben alleine erledigen, selbst wenn er HiveContext verwendet. – user1314742
@ user1314742, Ich versuche nicht speziell, tez zu verwenden. Die exection engine von hive-site.xml ist tez auf unserem Cluster. Ich füge die Abhängigkeiten hinzu, um zu versuchen, den Fehler loszuwerden. – RachmaninovQuartet
Also neue hive-site.xml in Ihr Spark conf Verzeichnis und versuchen, tez zu entfernen und es erneut versuchen .. das sollte das Problem beheben – user1314742