今天群内看到一个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 adecc1e7-9763-4d33-bf4d-7a1a8105af61_0: java.util.concurrent.TimeoutException: Client 'adecc1e7-9763-4d33-bf4d-7a1a8105af61_0' timed out waiting for connection from the Remote Spark Driver
并且这个连接超时是偶发的,即有时是可以执行成功的。详细报错情况如下图
经确认,hive确实已把默认计算引擎改为spark了,如下图:
内存设置虽不大,但数据量也不大哦,如下图:
经查,官网对Remote Spark Driver有三个参数:
关于此三个参数,中文说明见:https://www.iteblog.com/archives/1541.html,但设置时发现:
hive.spark.client.connect.timeout和hive.spark.client.server.connect.timeout这两个参数(单位毫秒)不能动态修改 (若想修改,见下文),也就是若在脚本里面去修改这两个参数会报错。故只能在脚本里面修改 set hive.spark.client.future.timeout=200;(单位秒)。
为修改hive.spark.client.connect.timeout由默认值1000改为10000,下图仅需改动一处(至于到底是哪处,我忘记了,若您一个一个试出来后,请评论区指出):
另外,hive on spark官网介绍:需把这个spark-assembly.jar 拷贝到hive 的lib下,但在spark2.x 的lib 下并无此jar。而此jar在spark1.6中确实存在。
由于此文的环境为cdh6.3.0和cdh6.3.1,若是cdh5.1x.x中spark1.6环境下,则报错情况应为:Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.TimeoutException: Timed out waiting for client connection.详情见:https://blog.csdn.net/hua_ed/article/details/79577229
小记:此文为群内讨论的内容所总结出来的,仅用于备查。