Spark SQL报错:org.apache.spark.sql.catalyst.errors.package$TreeNodeException 排查记录
注:使用的是腾讯云EMR 3.3.0 版本,其中spark为3.0.2版本。
排查过程:
在EMR集群上按小时跑的spark sql 任务有时会失败,在driver端的日志中可以看到报错: org.apache.spark.sql.catalyst.errors.package$TreeNodeException: execute, tree
对应的yarn上的application的日志中可以看到在executor将创建的信息(执行步骤、广播变量)不断的发给driver
从时间点上可以看到在16:16:37 到16:16:44 这个时间段内,executor不断地给 driver 发送信息(执行步骤、广播变量)
,在对应的web页面上也能看到driver上有大量的广播变量。而在16:16:45的时候driver就报错了。
查看错误栈对应的代码 org.apache.spark.sql.execution.exchange.BroadcastExchangeExec.$anonfun$relationFuture$1(BroadcastExchangeExec.scala:169)
错误栈:
Caused by: org.apache.spark.util.SparkFatalException
at org.apache.spark.sql.execution.exchange.BroadcastExchangeExec.$anonfun$relationFuture$1(BroadcastExchangeExec.scala:169)
at org.apache.spark.sql.execution.SQLExecution$.$anonfun$withThreadLocalCaptured$1(SQLExecution.scala:182)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
... 1 more
对应代码:
https://github.com/apache/spark/blob/branch-3.0/sql/core/src/main/scala/org/apache/spark/sql/execution/exchange/BroadcastExchangeExec.scala
排查结果:
driver端oom导致的报错。
解决方法:
1.关闭广播变量(set spark.sql.autoBroadcastJoinThreshold = -1 );
2.调大 spark.driver.memory 的值,比如4g
相关文章
- SQL Prompt10 安装激活教程,让你写sql 如鱼得水[通俗易懂]
- Apache配置虚拟主机出现forbidden的问题
- linux-安装apache
- Ubuntu 下基于 Apache 架设 Subversion(SVN) 服务器
- windows +apache + django + mod_wsgi 部署 Django 站点
- 技术实力与社区贡献的双重认可!乔嘉林成为 Apache 软件基金会 Member
- 原生态Ubuntu部署LAMP环境 PHP8.1+MySQL+Apache
- Apache Shiro权限框架简介详解架构师
- javaweb学习总结(四十一)——Apache的DBUtils框架学习详解编程语言
- kafka原理解析-《Learning Apache Kafka, 2nd Edition.pdf》详解编程语言
- 让Oracle SQL脱颖而出——性能优化实现(oracle的sql优化)
- 测试Oracle SQL:获得更多知识(oracle测试sql)
- sql 技术MongoDB:非SQL的新技术(mongodb不包含)
- sql语句精选:Oracle 前十条常用SQL语句.(oracle前十条)
- 阿里巴巴向 Apache 软件基金会捐赠消息中间件 RocketMQ
- 「MySQL 教程」学习如何拼接 SQL 语句,让你的操作更灵活高效(mysql拼接sql语句)
- 如何使用 MySQL 导入 SQL 文件?(mysql导入sql文件)
- 深入了解MySQL事务SQL的特性和用法(mysql事务sql)
- SQL与MySQL的异同——引起关注的相似之处(sql和mysql的区别)
- MySQL SQL调优技巧提高数据库性能(mysql中sql调优)
- MySQL查询父子级关系的SQL语句(mysql 上下级sql)
- Oracle SQL的翻译初探认识(oracle sql转译)
- 使用Oracle SQL进行批处理分析(oracle sql跑批)
- 用Apache反向代理设置对外的WWW和文件服务器
- 图片存储与浏览一例(Linux+Apache+PHP+MySQL)
- Apache的Rewrite心得
- linux下apache开启url重写的方法(详细说明)
- 浅析Apache中RewriteCond规则参数的详细介绍