打赏

[Hadoop] reduce爆内存的解决方法

(1) 【join爆内存】

在join之前,对这两部分数据,分别能先reduce的先reduce, 降低join时候分给每个reducer的条目数。

比如要拼接两份数据,每份数据A, B中相同key的条目最多有上百万条。

可以先分别对A, B先进行reduce操作,之后再join,

这样join时候传给每个reducer的相同key的条目数就由百万条,降低为个位数了。

(2) 【指定随机数辅助分reduce】

对于无法按照(1)中处理的情况:

如果直接将相同key的放一个reducer中可能会爆内存;

可以再人为指定辅助key (random_number, key),

比如这个random_number有10种不同的取值,那么相当于之前要分给1个reducer的数据,分给了10个reducer,降低了每个reducer的处理压力。

之后再 按照 原key进行一次reduce。

posted @ 2020-08-14 10:45  listenviolet  阅读(474)  评论(0编辑  收藏  举报