今天遇到了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