我们已经将Hive执行引擎从MapReduce切换到Spark,并尝试使用beeline
和jdbc
在Hive shell中运行查询。
我们能够运行简单的查询(例如:select * from table
(,因为它不需要处理数据,但是当我们尝试运行包含聚合函数的查询(例如:select count(*) from table
(时,我们面临以下错误:
Query ID = hadoop_20180105123047_5bcd0d7a-78bd-4b66-b5fb-fc430726c2a9
Total jobs = 1
Launching Job 1 out of 1
In order to change the average load for a reducer (in bytes):
set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
set mapreduce.job.reduces=<number>
Failed to execute spark task, with exception 'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create spark client.)'
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.spark.SparkTask
问题可能是什么?
第一个查询起作用的原因是因为它不需要任何 MR 或 Spark 作业即可运行。HS2 或 Hive 客户端只是直接读取数据。第二个查询需要运行 MR 或 Spark 作业。这是在测试群集或对群集进行故障排除时要记住的关键。
你能在Hive之外运行Spark作业吗?