我有两个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程序来遍历这两个目录并执行逻辑?
答案 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文件。