背景:最近公司开发了一个疑似实控人算子,在将任务提交到spark上执行时,任务报错:org.apache.spark.shuffle.FetchFailedException:Too large Frame:6800508225。
现象:通过观察yarn上task的执行情况,发现每次都存在一个task任务执行记录数超大,执行时间超长。
解决方式:初步以为是数据倾斜,然后增加executor个数,设置spark.default.parallelism=2000.重新启动任务后发现还是单个任务卡着很慢,又推断可能是单个key值导致单个分区数据量巨大,所以在上游数据输入处提前过滤单个key值记录数过多的情况,重新提交发现还是不行。不得已,开始研究别人写的源码,发现有处逻辑对企业进行分组后进行了collect操作,最后怀疑是这里导致窗体过大的,配置spark.driver.maxResultSize=8G。
重新提交后任务很顺利运行完毕。
spark任务报错:Too large Frame
于 2023-03-30 18:36:51 首次发布