You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于广播引发Driver内存溢出的疑问:Driver是否会复制广播数据?

广播操作引发Driver内存溢出的原因及Driver内存使用说明

Driver是否会持有广播数据的内存副本?

是的,Driver必然会将广播数据加载到自身内存中。广播的核心流程是:Driver首先从数据源读取要广播的数据,将其加载到自己的JVM内存里完成序列化,之后才会把序列化后的分发送给各个Executor节点。所以Driver本身会持有一份完整的广播数据内存副本。

广播时Driver内存溢出的常见原因

  • 广播数据实际体积超出预期:有时候你以为是“较小的表”,但实际数据可能包含大量重复值、大字段(比如长文本、二进制数据),或者统计的大小是压缩后的尺寸,加载到内存后体积膨胀数倍,直接撑爆Driver内存。
  • 多广播对象叠加占用:如果同时触发多个广播操作,多个数据集的内存占用叠加后,超出了Driver的内存上限,就会引发溢出。
  • 序列化/反序列化的额外开销:Driver在处理广播数据时,需要进行序列化操作,这个过程中会产生临时对象、序列化缓存等额外内存占用,这部分开销如果没被考虑到,也可能导致内存不足。
  • Driver内存配置过低:如果Driver的spark.driver.memory参数设置得太小,哪怕是中等大小的广播数据,也可能直接导致内存溢出。

内容的提问来源于stack exchange,提问作者Matthew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 04:04:54