最近在Hive中使用Spark引擎进行执行时(set hive.execution.engine=spark),经常遇到return code 30041的报错,为了深入探究其原因,阅读了官方issue、相关博客进行了研究。下面从报错现象、原因分析、解决方案几个方面进行介绍,最后做一下小结。

(一)报错现象

ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 7a817eea-176c-46ba-910e-4eed89d4eb4d

以上是我在使用Hive On Spark时遇到的报错信息,且频繁出现,但每次报错后重跑hql脚本即可解决,这让我十分疑惑。

(二)原因分析

相关博客列举了如下几个原因:

1、Spark没有正常启动

2、SparkHive版本不匹配

3、Hive连接Spark客户端超过设定时长

经过分析,我遇到的现象不属于1、2,集群上的Spark作业能正常运行,说明Spark是正常启动的;另外,由于设置了Hive On Spark的作业并非永久无法运行成功,而是偶发性失败,重试可成功执行,说明SparkHive的版本是匹配的,不存在版本冲突问题。

(三)解决方案

首先,根据mszurapRe: cant use hive on spark engine cannot create client erorr code 30041上的回答,首先前提是确保以下条件能得到满足:

1、在Hive服务>配置中已启用Spark服务作为依赖项
2、在Hive服务>配置中查看与Spark相关的设置
3、您在群集上有足够的资源,可以提交YARN作业

其次,如果以上条件均已满足,根据issues.apache.org/jira/browse/SPARK-32345ZhouDaHong的回答。

如果排除hivespark配置,以及版本冲突等原因。您可以查看队列资源。

如果队列资源达到100%,并且没有释放的空闲任务资源可在短时间内创建Spark会话,则任务将失败并且将引发此异常。

解决方案:将Hive客户端的连接时间间隔增加到5分钟;

设置hive.spark.client.server.connect.timeout = 300000;

该参数单位为毫秒,默认值为90秒。这里不建议将该参数时间设置过大,因为这将影响作业运行时效。

参考

[1]cant use hive on spark engine cannot create client erorr code 30041[https://community.cloudera.com/t5/Support-Questions/cant-use-hive-on-spark-engine-cannot-create-client-erorr/td-p/240504]

[2]SemanticException Failed to get a spark session: org.apache.hadoop.hive.ql.metadata.HiveException: Failed to create Spark client for Spark session[https://issues.apache.org/jira/browse/SPARK-32345]

[3]0514-Hive On Spark无法创建Spark Client问题分析[https://cloud.tencent.com/developer/article/1545722]

[4]hiveonspark不能创建sparksession原因定位[http://blog.sina.com.cn/s/blog_6dd718930102z2un.html]

[5]Failed to create Spark client for Spark session[https://www.cnblogs.com/Sunqi-1997/p/13701837.html]

[6]FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed to create Spark client for Spark session 7f00ef43-d843-45f5-a425-0995818a608f_0: java.lang.RuntimeException: spark-submit process failed with exit code 1[https://www.itdiandi.net/view/1431]

[7]Hive on Spark[https://issues.apache.org/jira/browse/HIVE-7292]

最新文章

  1. php的clone 浅拷贝
  2. [转]Centos安装zeromq和jzmq
  3. 0. CMMI快乐之旅——内容简介及目录
  4. C#:判断软件运行的环境是否是Pad(PC)
  5. Linux 监控文件被什么进程修改
  6. Redis数据导入工具优化过程总结
  7. validate插件:验证密码没有空格 用户名是5-10位 至少包含数字和大小写字母中的两种字符
  8. SSAS中Cube的结构
  9. 进程间通信的WM_COPYDATA的使用
  10. 内存映射 madvise mmap
  11. Insertion Sort List —— LeetCode
  12. 《第一行代码》学习笔记8-活动Activity(6)
  13. Linux查看所有用户用什么命令1
  14. SSL交互过程
  15. vue基础01
  16. 【一天一道LeetCode】#54. Spiral Matrix
  17. git教程——工作流程
  18. Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案
  19. H5 36-背景定位属性
  20. input时间表单默认样式修改(input[type="date"])

热门文章

  1. 第15.48节、PyQt显示部件:TextBrowser、CalendarWidget、LCDNumber、ProgressBar、Label、HorizontalLine和VerticalLine简
  2. 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解
  3. Asp.net core中RedisMQ的简单应用
  4. 【题解】Generator(UVA1358)
  5. 【HNOI2010】城市建设(对时间分治 & Kruskal)
  6. 廖雪峰官网学习js 字符串
  7. window下使用cmd查看端口占用的进程,并杀死该进程
  8. 设置定时任务用rman删除归档日志脚本
  9. PB级大规模Elasticsearch集群运维与调优实践【>>戳文章免费体验Elasticsearch服务30天】
  10. ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes