请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

map与mapPartitions内部实现的区别

图片描述

我在解析log时使用了mapPartitions,但是碰到了OOM问题,究其原因,我觉得是我使用的statList存放所有解析后的数据,这个list一直存在于内存中造成OOM。但是查了网上的说法,大家都说mapPartitions容易造成OOM,map本身则不会。我就想请问,spark在map的时候,1)将中间结果保存在哪里?2)为什么map的时候不容易OOM?3)我可不可以在mapPartitions里面使用map的一些内存管理的方式来避免OOM?

先在这里谢谢PK老师!

正在回答

1回答

map是一条一条的处理,他不存数据啊,只有action才会触发执行。map partition是一个partition数据处理一次,数据量大就oom了么

0 回复 有任何疑惑可以回复我~
  • 提问者 aaaaabbbc #1
    那有没有什么方法可以让我们自己确定分区大小的呢?比如每一千条数据,我就对它们一起进行一次处理?
    回复 有任何疑惑可以回复我~ 2018-11-01 09:41:13
  • Michael_PK 回复 提问者 aaaaabbbc #2
    可以,根据数据量预估分区数,手工设置进去
    回复 有任何疑惑可以回复我~ 2018-11-01 09:52:16
  • 提问者 aaaaabbbc 回复 Michael_PK #3
    问题就是生产中数据量无法预估,所以无法预估分区数,这时要怎么控制呢?
    回复 有任何疑惑可以回复我~ 2018-11-01 09:58:42
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号