hadoop,段落中的字数

时间:2013-04-12 22:30:02

标签: hadoop mapreduce word-count

通常情况下,Hadoop示例定义了如何对文件或多个文件进行字数统计,字数的结果将来自整个集合!

我希望为每个段落执行 wordcount 并存储在paragh(i)_wordcnt.txt等单独的文件中。

怎么做? (问题是映射器运行整个集合,reducer最终收集输出!

我能做的事情,如果我达到特定的标记写结果! ) 如果是filecontent:

para1
...
para2
...
para3
...

我能看到para2写出parac的wordcount的结果吗?或者如果以其他方式在单独的文件中写每个段落如何做这个序列

   loop: 
   file(i)(parai)->Mapper->Reducer->multipleOutput(output-file(i))->writetofile(i);
   i++;
   goto loop;

2 个答案:

答案 0 :(得分:0)

您需要让RecordReader一次读取一个段落。请参阅此问题:Overriding RecordReader to read Paragraph at once instead of line

答案 1 :(得分:0)

我正在写基本的基础知识,我们可以做到这一点。

我认为我们必须为此过程运行链接映射器和缩减器。

在第一个映射器中,您必须使用RecordReader并将其键设置为整个段落。这样我们就可以获得与你拥有的段数一样多的键。然后你需要将reducer用作identity reducer并再次将reducer的输出设置为一个新的mapper,它将段落作为键。

既然你的新映射器中有段落,你可以根据需要调整着名的word count code。(这里只用VALUES替换KEYS,其余部分都是相同的。)

由于您在reducer中嵌套了mapper,因此在单独的文件中获取段落的字数很容易。

请告诉我方法是否正确。