2

我一直在尝试让 spark-submit 与 org.apache.spark.sql.hive.HiveContext 一起使用,但我一直在使用 java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning。这是代码,它在最后一行中断:

val sc = SparkContext.getOrCreate()
val sqlContext = new org.apache.spark.sql.hive.HiveContext(sc)

这是在 Hortonworks 2.3.4 上,带有 spark 1.5.2、hive 1.2.1、hadoop 2.7.1 和 tez 0.7.0。我将 maven 用于除数据核之外的所有依赖项,我在 spark-submit 的 --files 参数中有 hive-site.xml 和 tez-site.xml。这是我的 pom 中与 tez 相关的摘录:

 <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>

此代码在 spark shell 中正常工作。有什么建议吗?

4

1 回答 1

1

按照@user1314742 的建议,我从 hive-site.xml 中删除了与 tez 相关的所有内容。我将它包含在 spark-submit 的 --files 参数中,以免更改我的实际配置单元配置。

因此,将新的 hive-site.xml 放入您的 spark conf 目录并尝试删除 tez 并重试.. 这应该可以解决问题

于 2016-03-24T21:30:01.170 回答