Spark优化那些事(4)-关于spark.driver.maxResultSize的疑惑

本文记录了一次遇到spark.driver.maxResultSize异常的情况,通过增大该参数解决了问题。异常源于worker返回给driver的数据超过限制。尽管代码中没有大规模数据回传,但在RDD求和操作时触发异常。通过分析,发现是由于driver需要维护大量分区状态导致的内存溢出。解决方案是增加driver内存,避免Driver OOM。文章强调了定位OOM问题的重要性,并提供了参考资料。
摘要由CSDN通过智能技术生成

今天遇到了spark.driver.maxResultSize的异常,通过增大该值解决了,但是其运行机制不是很明白,先记录在这里,希望后面有机会可以明白背后的机制。

该异常会报如下的异常信息:

Job aborted due to stage failure: Total size of serialized results of 3979 tasks (1024.2 MB) is bigger than spark.driver.maxResultSize (1024.0 MB)

锁定了是spark.driver.maxResultSize引起的,该参数控制worker送回driver的数据大小,一旦操过该限制,driver会终止执行。所以,我加大了该参数,结果执行成功。

问题就是,代码里不涉及大规模数据回传,代码如下

… // 省略

// 加载原始数据
val srcData = client.tdwSql(srcDB)
.table(srcTable, Array(“p_” + curDateObj.toString(formatPattern)))
.filter(“iworldid in (%s)”.format(worldIdList.mkString(",")))
.repartition(dataPart)
.persist(StorageLevel.MEMORY_AND_DISK)
println(“Original Data =============================”)
srcData.show(10

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值