微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

记一次hive提交spark任务报错

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;
`

减小内存即可

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐