Hive on spark FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark

最近跟着尚硅谷在做项目,做到Hive on spark时卡住了,在执行count(*)和插入语句时出现如上错误。这里我的hive是可以用的,spark也是可以用的,但将Hive的引擎改为spark 就不可以用了。所以在这里记录一下怎么解决以及思路。

具体报错如下:

FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 8368f4d4-5dd0-4156-af24-a91ee0e93878

2023-09-20 14:14:59,140 ERROR [602bc89a-5fa2-42a9-a59d-54e2bcc79f76 main] ql.Driver: FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 8368f4d4-5dd0-4156-af24-a91ee0e93878

2023-09-20 14:14:59,144 INFO [602bc89a-5fa2-42a9-a59d-54e2bcc79f76 main] ql.Driver: Completed executing command(queryId=pdl_20230920141313_9e7895f3-957e-4bbf-be8d-39f2a752a74d); Time taken: 101.865 seconds

2023-09-20 14:14:59,144 INFO [602bc89a-5fa2-42a9-a59d-54e2bcc79f76 main] ql.Driver: Concurrency mode is disabled, not creating a lock manager

2023-09-20 14:14:59,176 INFO [602bc89a-5fa2-42a9-a59d-54e2bcc79f76 main] conf.HiveConf: Using the default value passed in for log id: 602bc89a-5fa2-42a9-a59d-54e2bcc79f76

2023-09-20 14:14:59,177 INFO [602bc89a-5fa2-42a9-a59d-54e2bcc79f76 main] session.SessionState: Resetting thread name to main。

下面是网上有的思路:

检查端口号是否一致

就是Namenode的端口号问题,hdfs之间的端口号要统一,大家可以去hadoop文件夹里面去找,没改的话就是8020;

修改spark-env.sh

spark的SPARK_HOME/conf该目录中有个spark-env.sh.template
文件然后修改文件名为spark-env.sh
也就是mv spark-env.sh.template spark-env.sh;
然后在该文件中添加:
export SPARK_DIST_CLASSPATH=$(hadoop classpath)

修改hive-site.xml

hive/conf/hive-site.xml中增加:(这里特地延长了hive和spark连接的时间,可以有效避免超时报错)
<!--Hive和spark连接超时时间-->
<property>
<name>hive.spark.client.connect.timeout</name>
<value>100000ms</value>
</property>

上面三种方法我都尝试过了,发现还是不行。

我的解决

然后访问yarn 的8088界面,该任务日志如下

上面显示的是找不到该方法,然后我上网查找,很多都是说版本不兼容问题,但我的版本应该是兼容的

chatGPT告诉我“在这种情况下,问题很可能与Guava库的版本冲突有关。Guava是Java应用程序中常用的库,您的应用程序或其依赖项的不同部分可能使用不同版本的Guava。”

我的hadoop 是3.1.2,hive是3.1.2,spark是3.3.0,

尚硅谷的Hadoop是3.1.3,我猜测难道真的是版本问题。于是又重新装了hadoop3.1.3.重新装完后还是不行。

然后我又去查找了Hadoop的jar包($HADOOP_HOME/share/hadoop/common/lib)查找spark的jar包($SPARK_HOME/jars)

ls -al | grep guava

发现版本不一致,然后选择高一点的版本,删除低版本。

这里强调,版本问题真的很重要,对待其他版本不兼容问题,也可以采用上述方法,将两个框架里的相同jar包更换为相同的版本。

再次尝试,发现可以连接到spark session了,但是任务没有执行成功,具体日志咋说的我也不记得了,忘记保存了。

后面我又退出hive ,再重新进入,惊奇的发现插入语语执行成功

终于啊

后来我发现这个hive on spark有时能执行成功,有时又不行,我也不知道为啥,报错是偶尔性的,连接不上我就退出hive,重新进入。

连接不上时,报错就是显示无法连接spark session,然后看yarn的web界面的任务日志,又是显示找不到该方法。

后来我看到这篇文章,博主也出现类似的问题,时而成功时而不成功。

HiveOnSpark报错:Client ‘xxx‘ timed out waiting for connection from the Remote Spark Driver-CSDN博客

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值