假设我想用hadoop计算单词共现(测量一个接一个出现的两个单词的频率)。 所以这是一个众所周知的问题,有一个众所周知的解决方案。 对于映射器读取的每个文档,它输出对((w,u),1)其中w&你是一个接一个地出现的词。 然后,reducer将每个(w,u)对的出现次数相加。
我的问题如下: HDFS将大文件分区为块(128M或256M),每个映射器在不同的块上运行。因此上述算法将错过对2个块边界内的单词对的计数。例如,如果原始文档中有单词" hello world"在分裂成块之后"你好"被置于第1块和#34;世界"的最后一个字。作为块#2的第一个字,那么上述算法将不计算这种共现。
我们如何用hadoop处理这个边缘情况?
谢谢, 阿里扎
答案 0 :(得分:1)
这通常由hadoop透明处理(例如,参见How does Hadoop process records split across block boundaries?)