具有多个reduce任务可将单个HDFS文件组装为输出

时间:2019-02-11 16:44:59

标签: hadoop hdfs

Hadoop中是否有任何低级API,允许在不同计算机上运行的多个reduce任务将单个HDFS组装为它们的计算输出?

在工作开始时会创建一个存根HDFS文件,然后每个化简器会创建可变数量的数据块作为输出,并按一定顺序将其分配给该文件

2 个答案:

答案 0 :(得分:1)

答案是否定的,对于罕见的用例而言,这将是不必要的复杂化。

你应该做什么

选项1 -在hadoop命令的末尾添加一些代码

tbl.val

hadoop FileSystem api中提供了所有必需的方法。

选项2 -添加作业以合并文件

您可以创建一个通用的hadoop作业,该作业将接受目录名称作为输入并将所有内容按原样传递给单个reducer,它将结果合并到一个输出文件中。在与您的主要工作一起的管道中调用此工作。

对于大量输入,这将更快地工作。

答案 1 :(得分:0)

如果要在本地合并输出文件,可以使用hadoop命令getmerge将多个reduce任务文件组合为一个本地输出文件,以下是相同的命令。

hadoop fs -getmerge /output/dir/on/hdfs/ /desired/local/output/file.txt