为了账号安全,请及时绑定邮箱和手机立即绑定

获取匹配的文件名并打印到输出文件

获取匹配的文件名并打印到输出文件

潇湘沐 2023-02-23 16:27:53
我一直在尝试提出标准WordCount v1.0的修改版本 ,其中我从输入目录 (args[0]) 读取所有文件,并将输出打印到输出目录 (args[1 ] )它不仅包含单词和出现次数,还包含匹配发生的文件列表。因此,例如我有 2 个文本文件://1.txtI love hadoopand big data//2.txtI like programminghate big data输出将是://Output.txtI       2   1.txt 2.txtlove    1   1.txthadoop  1   1.txtand     1   1.txtbig     2   1.txt 2.txtdata    2   1.txt 2.txtlike    1   1.txtprogramming  1  2.txthate    1   2.txt在这个阶段,我不确定如何提取发生匹配的文件的名称。此外,我不确定如何存储文件名——是使用 Triple 还是需要使用嵌套映射,所以也许是 Map (K1, Map (K2, v))?我不知道在 mapreduce 程序中哪些是可能的,所以任何提示将不胜感激。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

通常不鼓励获取文件名。不同的输入格式有不同的方式来做到这一点,其中一些可能根本不提供这样的功能。

假设您正在使用 simple TextInputFormat,您可以使用映射器上下文来检索拆分:

FileSplit split = (FileSplit)context.getInputSplit();
String filename = split.getPath().getName();

为了生成所需的格式,让映射器发出元组<Text(word),Text(filename)>。Reducer 应该将它们收集到Map<String(word), Set<String>(filename)>. 这假设没有使用组合器。


查看完整回答
反对 回复 2023-02-23
  • 1 回答
  • 0 关注
  • 78 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信