背景
最近在跑 sparkSQL的时候,执行到一半,频繁打印日志报错:
WARN TaskMemoryManager: Failed to allocate a page (104876 bytes), try again.
WARN TaskMemoryManager: Failed to allocate a page (104876 bytes), try again.
…
原因
执行任务的内存不够,需要频繁回收资源
解决办法
1、优化sql脚本。(首选,当时我就是这么解决的)
2、增加driver内存, --driver-memory 6G
我当时的sql 简化如下:
select name
from stu
where id in (select id from in_stu);
stu数据量为 800w, in_stu 数据量为 1.2kw
优化为:
select name
<

在执行SparkSQL任务时遇到中途频繁打印内存分配失败的日志,原因是内存不足。通过优化SQL脚本,例如在子查询中使用`DISTINCT`关键字减少数据量,从800w和1.2kw降至11w,成功解决问题。此外,还可以考虑增加Driver内存。对于大规模表的JOIN操作,可以采用先对较小表进行`GROUP BY`来降低数据量,提高查询效率。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



