我想实现一个用于字数计算的hadoop reducer。在我的reducer中,我使用一个哈希表来计算字数。但是如果我的文件非常大,哈希表将使用非常多的内存。如何解决这个问题(e、 g一个有1000万行的文件,每个减速机接收1亿个字他怎么计算一个哈希表需要1亿个键的字)我当前的实现是用python实现的。有没有一个聪明的方法来减少内存量?
plupiseo1#
最有效的方法是在Map器中维护词频的哈希Map,当它们达到一定大小(比如100000个条目)时,将它们刷新到输出上下文中。然后清除Map并继续(记住也要在cleanup方法中刷新Map)。如果你还真的有一亿个单词,那么你要么需要等待很长一段时间,让reducer完成,要么增加你的集群大小,使用更多的reducer。
1条答案
按热度按时间plupiseo1#
最有效的方法是在Map器中维护词频的哈希Map,当它们达到一定大小(比如100000个条目)时,将它们刷新到输出上下文中。然后清除Map并继续(记住也要在cleanup方法中刷新Map)。
如果你还真的有一亿个单词,那么你要么需要等待很长一段时间,让reducer完成,要么增加你的集群大小,使用更多的reducer。