高效的Hadoop Word计数大文件

时间:2012-12-01 20:12:54

标签: python hadoop hadoop-streaming

我想实现一个用于字数统计的hadoop reducer。 在我的reducer中,我使用哈希表来计算单词。但是如果我的文件非常大,哈希表将使用极大的内存。我如何解决这个问题? (例如,每个减速器有1000万行的文件接收1亿字,他如何计算哈希表需要1亿个键的字数) 我目前的实现是在python中。 有没有一种减少内存量的聪明方法?

1 个答案:

答案 0 :(得分:0)

执行此操作的最有效方法是在映射器中维护字频率的哈希映射,并在它们达到特定大小(例如100,000个条目)时将它们刷新到输出上下文。然后清除地图并继续(记得在清理方法中刷新地图)。

如果你真的有100亿字,那么你需要等待很长时间才能完成减速器,或者增加你的簇大小并使用更多的减速器。