【发布时间】:2017-10-01 03:54:10
【问题描述】:
在使用 HDP 2.5 和 spark 1.6.2 时,我们使用带有 Tez 的 Hive 作为其执行引擎并且它工作正常。
但是当我们使用 spark 2.1.0 迁移到 HDP 2.6 时,Hive 无法使用 Tez 作为其执行引擎,并且在调用 DataFrame.saveAsTable API 时引发了以下异常:
java.lang.NoClassDefFoundError: org/apache/tez/dag/api/SessionNotRunning
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:529)
at org.apache.spark.sql.hive.client.HiveClientImpl.<init> HiveClientImpl.scala:188)
在查看this 问题的答案后,我们将 hive 执行引擎切换到 MR (MapReduce) 而不是 Tez 并且它起作用了。
不过,我们希望在 Tez 上与 Hive 合作。为了使 Tez 上的 Hive 正常工作,解决上述异常需要什么?
【问题讨论】:
-
我的两分钱:检查 Spark 使用的
hive-site.xml是否已从所有 TEZ 配置属性中清除。 -
但我们想使用 TEZ。我的问题是我们是否可以在带有 HDP 2.6 的 TEZ 上使用 Hive(在 HDP 2.5 中有效,但在 HDP 2.6 中无效)。
-
Spark 不使用 TEZ。 Spark 确实不使用 MR。 Spark 有自己的执行引擎。因此,您看到的错误必须来自连接到 Hive Metastore 时的(无用的)init 参数。
标签: apache-spark hive tez