首页 > 解决方案 > CDH 6.2 Hive 无法在 Spark 和 MapReduce 上执行查询

问题描述

我正在尝试select count(*) from table在 Hive 上运行一个简单的查询,但它失败并出现以下错误:

FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 5414a8a4-5252-4ccf-b63e-2ee563f7d772_0: java.lang.ClassNotFoundException: org.apache.spark.SparkConf

自从我迁移到 CDH 6.2 并启用 Spark(版本 2.4.0-cdh6.2.0)作为 Hive(版本 2.1.1-cdh6.2.0)的执行引擎后,这种情况就发生了。

我的猜测是 Hive 未正确配置为启动 Spark。我尝试设置to的spark.home属性,并将环境变量设置为相同的值,但没有任何区别。hive-site.xml/opt/cloudera/parcels/CDH/lib/spark/SPARK_HOME

此处报告了类似的问题,但无法应用解决方案(即,将spark-assembly.jar文件放在 Hive 的目录中)(因为该文件不再构建在最新的 Spark 版本中)。lib

上一个问题解决了一个类似但不同的问题,与 YARN 的内存限制有关。

此外,切换到 MapReduce 作为执行引擎仍然失败,但出现不同的错误:

FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. org/apache/hadoop/hdfs/protocol/SystemErasureCodingPolicies

在谷歌上寻找最新的错误根本没有结果。


更新:我发现当通过其他工具(例如 Beeline、Hue、Spark)连接到 Hive 并且独立于底层执行引擎(即 MapReduce 或 Spark)时,查询确实有效。因此,错误可能存在于当前已弃用的 Hive CLI 中。


更新 2:在 Beeline 和 Hue 上使用 CREATE TABLE 查询实际上发生了同样的问题;我只能使用 Zeppelin 的 Hive 解释器来执行它

标签: apache-sparkhivemapreducecloudera-cdh

解决方案


推荐阅读