Hadoop中是否有任何低级API允许在不同机器上运行多个reduce任务来组装单个HDFS作为其计算输出?
像,一个存根HDFS文件是……
答案是否定的,对于一个罕见的用例来说,这将是一个不必要的复杂问题。
你应该做什么
的 选项1 强> - 在hadoop命令的末尾添加一些代码
int result = job.waitForCompletion(true) ? 0 : 1; if (result == 0) { // status code OK // ls job output directory, collect part-r-XXXXX file names // create HDFS readers for files // merge them in a single file in whatever way you want }
所有必需的方法都存在于hadoop FileSystem api中。
的 选项2 强> - 添加作业以合并文件
您可以创建一个通用的hadoop作业,它接受目录名作为输入,并按原样将所有内容传递给单个reducer,这会将结果合并到一个输出文件中。在主要工作的管道中调用此工作。
对于大输入,这将更快地工作。
如果要在本地合并输出文件,可以使用hadoop命令getmerge将多个reduce任务文件合并到一个本地输出文件中,下面是命令相同。
hadoop fs -getmerge /output/dir/on/hdfs/ /desired/local/output/file.txt