通常,hadoop示例定义如何对一个文件或多个文件进行字数计算,字数计算的结果将来自整个集合!
我希望为每个段落做字数统计,并存储在不同的文件中,如paragh(i)\u wordcnt.txt。
怎么做(问题是mapper运行整个集合,reducer最终收集输出!
我能做点什么吗,比如说,如果我达到了一个特定的分数,写下结果!)如果文件内容:
para1
...
para2
...
para3
...
我能喜欢看到para2写para1的字数结果吗?或者如果以另一种方式将每个段落写入单独的文件中,如何按此顺序执行
loop:
file(i)(parai)->Mapper->Reducer->multipleOutput(output-file(i))->writetofile(i);
i++;
goto loop;
2条答案
按热度按时间taor4pac1#
你需要让阅读器一次读一段。请参阅以下问题:重写recordreader以立即读取段落而不是行
idfiyjo82#
我写的基本基金会,因为我们可以这样做。
我想我们必须运行链接Map器和还原程序。
在第一个Map器中,必须使用recordreader并将其键设置为整个段落。这样,我们将得到尽可能多的关键段落你有。然后你需要使用的身份减缩减缩器,并再次让减缩器的输出到一个新的Map器将得到关键段落。
现在,由于您的新Map程序中有段落,您可以根据需要调整著名的字数代码(只需在此处用值替换键,其余的都一样)。
因为您在一个reducer中嵌套了mapper,所以在单独的文件中获取段落的字数将很容易。
如果我的方法不对,请告诉我。