3

当使用 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)

在查看了这个问题的答案之后,我们将 hive 执行引擎切换到 MR (MapReduce) 而不是 Tez 并且它起作用了。

但是,我们希望在 Tez 上与 Hive 合作。为了让 Tez 上的 Hive 工作,解决上述异常需要什么?

4

1 回答 1

1

当 spark 作业在 YARN CLUSTER 模式下运行时,我遇到了同样的问题,并且在将正确的 hive-site.xml 添加到(添加到 spark-default 配置)“ spark.yarn.dist.files ”时解决了这个问题

基本上有两个不同的 hive-site.xml 文件,一个用于 hive 配置:/usr/hdp/current/hive-client/conf/hive-site.xml 另一个是用于 spark 的较轻版本(只有spark 与 hive 一起工作):/etc/spark//0/hive-site.xml(请检查一次路径以进行设置)

我们需要为 spark.yarn.dist.files 使用第二个文件。

于 2017-12-05T23:29:58.970 回答