gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 16:35:01 26 4
gpt4 key购买 nike

您好,我一直在尝试提出标准的修改版本 WordCount v1.0其中我从输入目录 (args[0]) 读取所有文件,并将输出打印到输出目录 (args[ 1 ]),该目录不仅包含单词和出现次数,还包含文件列表比赛发生的地方。

例如我有 2 个文本文件:

//1.txt
I love hadoop
and big data

//2.txt
I like programming
hate big data

输出将是:

//Output.txt
I 2 1.txt 2.txt
love 1 1.txt
hadoop 1 1.txt
and 1 1.txt
big 2 1.txt 2.txt
data 2 1.txt 2.txt
like 1 1.txt
programming 1 2.txt
hate 1 2.txt

在这个阶段,我不确定如何提取发生匹配的文件的名称。此外,我不确定如何存储文件名——是使用 Triple 还是需要使用嵌套映射,所以也许是 Map (K1, Map (K2, v))?我不知道在 mapreduce 程序中哪些是可能的,所以任何提示将不胜感激。

最佳答案

通常不鼓励获取文件名。不同的输入格式有不同的方式来执行此操作,其中一些可能根本不提供此类功能。

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

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

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

关于Java Mapreduce - 获取匹配的文件名并打印到输出文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56801540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com