hive提交spark报错
报错内容
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. Failed to create spark client.
排查思路
首先确定集群最近没有修改,可能是sql配置的有问题,请教开发同学 发现也没有变动。
这里的报错显示任务没有提交到集群, 那么使用其他简单的命令试一试
hive -e "show databases"
hive -e "select count(1) from XXX.XX"
这里面的第一个语句显示结果 表明连接集群没问题 因为查询出来的结果是集群里面的数据
第二个语句查询出来也没问题,因为count(*)会跑mr 所以集群肯定没问题
- 接下来怀疑可能是sql里面的参数有问题, 大概看了下没有发现什么问题,
- 终极杀招
添加参数
--hiveconf hive.root.logger=DEBUG,console
如下示例
hive --hiveconf hive.root.logger=DEBUG,console --hiveconf hive.spark.client.server.connect.timeout=300000ms --hiveconf hive.exec.max.dynamic.partitions.pernode=1000 -hivevar pd=2022-04-25 -hivevar yesterday=2022-04-24 -hivevar start_time=2021-10-28 -hivevar end_time=2022-04-26 -f ./1.sql
这样我们就看到报错了
2022-04-26T11:03:48,324 INFO [stderr-redir-1] client.SparkClientImpl: Exception in thread "main" java.lang.IllegalArgumentException: Required executor memory (10240), overhead (1024 MB), and PySpark memory (0 MB) is above the max threshold (10485 MB) of this cluster! Please check the values of 'yarn.scheduler.maximum-allocation-mb' and/or 'yarn.nodemanager.resource.memory-mb'.
原来是因为修改了yarn的mem 导致任务提交申请不到那么多内存
sql里面的写法
` SET spark.sql.autoBroadcastJoinThreshold=-1;
SET spark.driver.memory=8G;
SET spark.executor.memory=10G;
SET spark.driver.maxResultSize=8G;
`
减小内存即可