0

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

4

1 回答 1

0

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

如果你仍然真的有 1 亿个单词,那么你要么需要等待很长时间才能完成减速器,要么增加集群大小并使用更多减速器。

于 2012-12-01T20:42:28.407 回答