-4

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

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

最终输出应该是

apple

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

4

1 回答 1

0

您正在尝试对两个文件实施连接操作。您可以通过编写一个发出对的映射器来做到这一点。(word,filename)在减速器中,您检查两个文件名是否都在发出之前的值中。您可以通过从 InputSplit 中获取 Path 来获取文件名。

这在“Hadoop in practice”一书中进行了描述,如果您打算更认真地使用 hadoop,建议您阅读该书。

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

于 2013-10-23T09:15:52.667 回答