合并MapReduce输出

时间:2014-03-20 13:23:03

标签: hadoop mapreduce hdfs

我有两个MapReduce作业,它们在两个独立的目录中生成文件,如下所示:

 Directory output1:
 ------------------
 /output/20140102-r-00000.txt
 /output/20140102-r-00000.txt
 /output/20140103-r-00000.txt
 /output/20140104-r-00000.txt

 Directory output2:
 ------------------
 /output-update/20140102-r-00000.txt

我想将这两个目录合并在一个新目录/ output-complete /中,其中20140102-r-00000.txt替换/ output目录中的原始文件和所有" -r-0000x& #34;从文件名中删除。这两个原始目录现在将为空,结果目录应如下所示:

 Directory output3:
 -------------------
 /output-complete/20140102.txt
 /output-complete/20140102.txt
 /output-complete/20140103.txt
 /output-complete/20140104.txt

最好的方法是什么?我可以只使用HDFS shell命令吗?我是否需要创建一个java程序来遍历这两个目录并执行逻辑?

2 个答案:

答案 0 :(得分:0)

你可以用猪......

get_data = load '/output*/20140102*.txt' using Loader()
store get_data into "/output-complete/20140102.txt"

或HDFS命令......

hadoop fs -cat '/output*/20140102*.txt' > output-complete/20140102.txt

单个qoutes可能无效,请尝试使用双引号

答案 1 :(得分:0)

您可以使用hdfs命令-getMerge合并hdfs文件。