Hadoop MapReduce处理来自HDFS的不同输入文件



我正在编写一个Java MapReduce程序。例如,我有两个HDFS文件。我的程序将从 HDFS 读取这 2 个文件,在两个文件中找到相同的行并输出结果。例如:

a.log:
  apple
  computer
  bird
b.log:
  steve
  pear
  apple

最终输出应为

apple

我该怎么做?我正在尝试先读取 a.log 并将其存储到哈希集中,但它不起作用,因为任务跟踪器无法相互共享内存。有人能知道吗?或者Hadoop MapReduce没有这种OOTB?

您正在尝试对两个文件实现联接操作。您可以通过编写一个发出(word,filename)对的映射器来做到这一点。在化简器中,您可以在发出之前检查两个文件名是否都在值中。您可以通过从输入拆分中获取路径来获取文件名。

这在"Hadoop in practice"一书中有描述,如果你打算更认真地使用Hadoop,建议阅读这本书。

如果此答案有帮助,请标记为已回答。