Hadoop字数

时间:2016-10-05 19:02:08

标签: java hadoop word-count

对于Hadoop中的单词计数示例,在map函数中,它将单词和一个作为中间结果写入文件,并使用reduce进行总和。为什么不在mapper函数中使用hashmap,其中键是word而值是count,如果一个单词在1个文件spit中出现多次,则会添加该单词的值。在mapper函数的最后,写出结果。

通过这种方式,它比原始设计更有效(不使用组合器),虽然使用组合器,效率应该相等。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

是的,你也可以使用hashmap。但在设计解决方案时,您需要考虑最坏的情况。

通常,块的大小为128 MB,并且考虑到没有或非常少重复的小字(就字长而言)。在这种情况下,你会有很多单词,因此没有。 HashMap中的条目将增加,消耗更多的内存。您需要考虑在同一数据节点上可能有许多不同的作业,因此这个消耗更多RAM的HashMap最终会减慢其他作业的速度。此外,当HashMap的大小增加时,它必须执行Rehashing,这会为您的作业执行增加更多时间。

答案 1 :(得分:0)

我知道这是一篇过时的文章,但是对于将来正在寻求Hadoop帮助的人们,也许可以查看此问题以获取其他参考:Hadoop Word count: receive the total number of words that start with the letter "c"