合并mapreduce输出

1szpjjfi  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(337)

我有两个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”。两个原始目录现在将为空,生成的目录应如下所示:

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

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

5anewei6

5anewei61#

你可以用Pig。。。

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

单引号可能不起作用,请尝试使用双引号

bttbmeg0

bttbmeg02#

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

相关问题