2

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

我希望对每个段落进行字数统计并存储在 paragh(i)_wordcnt.txt 等单独的文件中。

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

如果我达到特定的标记写入结果,我可以做些什么! ) 说如果文件内容:

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

我可以看到 para2 写 para1 的字数结果吗?或者如果以其他方式将每个段落写入单独的文件中,如何执行此序列

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

2 回答 2

0

您需要让 RecordReader 一次读取一个段落。看到这个问题:Overriding RecordReader to read Paragraph on once instead of line

于 2013-04-13T07:04:50.693 回答
0

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

我认为我们必须为这个过程运行链接的映射器和减速器。

在第一个映射器中,您必须使用RecordReader并将其键设置为整个段落。这样,我们将获得与段落一样多的键。然后您需要使用减速器作为身份减速器,并再次让减速器的输出到一个新的映射器,该映射器将段落作为键。

现在,由于您的新映射器中有段落,您可以根据需要调整著名的字数统计代码。(只需在此处将 KEYS 替换为 VALUES,其余部分将相同)。

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

请告诉我的方法是否不正确。

于 2013-04-15T10:47:50.017 回答