spark程序性能优化--合并文件

背景:把总量3T的文件和40G的文件合并按key合并,把3T中40G有的记录换成40G的,40G中3T没有的加上。原先是按其中一个数据域经过hash,把数据分成3个part进行处理,大概每个半小时,3个任务1.5小时处理完(之前3T的数据总量大约1.2T)。但随着数据增加,每个部分数据变为了1T,并且数据长度增长,原先半小时的任务跑2个小时都跑不完,进行优化。

(1)读入优化:对每条记录用split,对长记录来说太慢,换成indexOf找到分隔符第一次出现的位置,根据index分割那想要的part,效率高了10+倍

spark程序性能优化--合并文件

(2)repartition

问题:

spark程序性能优化--合并文件

解决:

(1)试验把repartition前面有一个reduceByKey去掉,只剩下repartition,其实速度很快,慢就慢在reduceByKey上

spark程序性能优化--合并文件