在一个SparkSQL任务中,由于每隔5分钟就要调度一次,偶尔在任务中会出现这个错误:
stage24 contains a task of very large size;the maximum recommended task size is 100kb
奇怪的是:这个错误有时候并不会干扰程序的正常运行,但是有时候又会导致程序的异常中断,所以在查阅了大量的相关资料之后,采用下面三个方法的组合:
(1)调整shuffle partition的数:
之前为了避免产生大量的小文件,只使用了10分区,后来调整到1000分区,
(2)调整rpc数据传输的大小:
--conf spark.rpc.message.maxSize=1024
这个的默认值是128M,需要调大一些。
在采用了上述两种方式之后,程序并没有得到改善,于是调整了一下Driver端的内存:
--driver-memory 12g
之前是8g
再测试一下之后发现任务成功执行了,没有再出现异常中断的情况。