公司这边有个数据聚合的任务,聚合的过程中遇到了数据倾斜,通过局部聚合和全局聚合的方式解决,速度提升了很多,12G 的数据大概需要 15 分钟左右聚合完,但是在最后以 json 格式的文件存储到 hdfs 上时特别耗时,而且偶尔会报内存溢出,spark.default.parallelism 设置的是 200,最后保存时是这么写的:df.repartition(20).write.json(savePath),求 spark 大神指点我哪里有问题,该怎么解决这个问题?谢谢。
|
linuxchildDec 25, 2017
1
压缩一下再写试试
|
|
2
@linuxchild 嗯,谢谢,我加上了这段代码 df.persist(StorageLevel.MEMORY_AND_DISK_SER),现在程序在跑
|
|
F281M6Dh8DXpD1g2Dec 25, 2017
3
df.repartition(20) 这样不是只起二十个 partition 在写么
直接 df.write.json 试试? |
|
mind3xDec 25, 2017
5
用 coalesce(20) 试试
|
|
MondozDec 25, 2017
8
同 coalesce
|
|
F281M6Dh8DXpD1g2Dec 25, 2017
11
可以先 df.repartition(20) 看看执行计划
然后你就明白为啥这么慢了 |
|
zhusimajiDec 26, 2017
17
oom 产生的原因很多,最好根据打印的 log 日志去找相对应的资料
|