【发布时间】:2012-12-01 20:12:53
【问题描述】:
我想实现一个用于字数统计的 hadoop reducer。 在我的减速器中,我使用哈希表来计算单词。但是如果我的文件非常大,哈希表将使用大量内存。我该如何解决这个问题? (例如,一个有 1000 万行的文件,每个 reducer 接收 1 亿个单词他如何计算单词一个哈希表需要 1 亿个键) 我目前的实现是在 python 中。 有没有减少内存量的聪明方法?
【问题讨论】:
-
我错过了什么吗?但是如果你只是想计算单词,你不需要一个 100 米长的哈希表,因为你会得到很多重复。例如,您可能会获得 250k 词条
the。你不能通过增加collections.Counter的函数逐行流式传输数据吗? -
对不起我的错误我想说,例如,对于 1 亿个不同的单词,我需要在哈希表中包含 1 亿个条目
-
一亿个不同的单词,真的吗? oxforddictionaries.com/words/…
-
好吧,当然也许这不现实,我只是在寻找更好的方法!:P(在我的事业中,我没有真正的单词,我真的记忆问题)
-
@nikosdi 英语中的单词数量并不多,甚至每种语言的组合都没有。除非你不是来自这个星球,否则你不需要那么多哈希值。
标签: python hadoop hadoop-streaming