Hadoop - 在reduce之后从输出文件中获取结果?

jde*_*lop 10 hadoop mapreduce

给定map和reduce阶段的作业,我可以看到输出文件夹包含名为"part-r-00000"的文件.

如果我需要在应用程序级别上对这些文件进行后处理,是否需要以自然命名顺序迭代输出文件夹中的所有文件(part-r-00000,part-r-00001,part-r-00002 ...)为了获得工作成果?

或者我可以使用一些hadoop帮助文件阅读器,这将允许我获得一些"迭代器"并为我处理文件切换(当文件part-r-00000被完全读取时,从文件part-r-00001继续)?

Bit*_* GS 8

您可以使用Hadoop文件系统(FS)shell的getmerge命令:

hadoop fs -getmerge /mapreduce/job/output/dir/ /your/local/output/file.txt
Run Code Online (Sandbox Code Playgroud)


DDW*_*DDW 5

在mapreduce中,您指定一个输出文件夹,它将仅包含part-r文件(这是reduce任务的输出)和_SUCCESS文件(为空)。因此,我认为如果要进行后处理,则只需将job1的输出目录设置为job 2的输入目录。

现在可能对您的后处理器有一些要求可以解决,例如,按顺序处理输出文件是否很重要?

或者,如果您只想在本地处理文件,则这完全取决于您的mapreduce作业的输出格式,这将告诉您part-r文件的结构。然后,您可以简单地使用标准i / oi猜测。