错误描述

按照官方文档,搭建Hive On Spark时,出现以下错误。

FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session xxx: java.util.concurrent.TimeoutException: Client 'xxx timed out waiting for connection from the Remote Spark Driver

错误分析

既然是连接超时,可能有两种情况。一种是配置正常,但网络情况太差,响应还未返回给Hive就报错了。这种情况下,把请求等待时间改大就行。

在hive中,编辑hive-site.xml,调整以下参数:

# 单位毫秒
hive.spark.client.connect.timeout
hive.spark.client.server.connect.timeout

但多数情况下,可能是hive on spark的配置错误或缺失,导致无法响应。 如果是参照官方文档进行的搭建,则需要注意Spark的版本问题。

Hive On Spark是需要特定的Spark版本的,如果当前Hive只支持Spark 1.x,则需把spark-assembly.jar拷贝到Hive 的lib目录下。

但如果你使用了Spark2.x的集群,在Spark2.x 的lib下是诶没有这个jar包的。所以会出现报错情况。

解决方案

从官网查询当前Hive所依赖的Spark版本,重新安装Spark。或者使用编译的方式安装Spark,去除hadoop依赖即可,详情见Hive官网文档的Hive On Spark搭建一节。

后话

如果有帮助的,记得点赞、关注。在公众号《数舟》中,可以免费获取专栏《数据仓库》配套的视频课程、大数据集群自动安装脚本,并获取进群交流的途径。

我所有的大数据技术内容也会优先发布到公众号中。如果对某些大数据技术有兴趣,但没有充足的时间,在群里提出,我为大家安排分享。

公众号自取:

公众号

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐