hadoop -getmerge有替代品吗?

时间:2016-04-19 07:39:24

标签: hadoop merge yarn hadoop2

我尝试使用hadoop get merge来合并集群中的80 GB文件,

但是由于hadoop get merge具有将文件从hdfs复制到本地文件系统的属性,我必须复制到本地,然后再将copyFromLocal复制到hdfs,

  

hadoop fs - getmerge hdfs:/// path_in_hdfs / * ./local_path

     

hadoop fs -copyFromLocal ./local_path hdfs:// Destination_hdfs_Path /

我的问题是本地的datanode小于80 GB,

我需要知道是否存在-getmerge的替代方法,其中合并直接从HDFS发送到HDFS

我也试过hadoop -cat,但它无法正常工作..

3 个答案:

答案 0 :(得分:1)

带有-cat选项的HDFS命令应该可以正常工作。将-cat命令的结果传递给-put命令。

hadoop fs -cat hdfs://input_hdfs_path/* | hadoop fs -put - hdfs://output_hdfs_path/output_file.txt

答案 1 :(得分:0)

实际上没有一个真正的选择。您可以通过MapReduce或Spark作业获得相同的结果(将输出的并行度设置为1),但是没有使用纯hdfs命令的解决方案。

答案 2 :(得分:0)

流式传输可能有所帮助。但是,合并的文件将按排序顺序排列(第一个选项卡之前的文本将是键)。如果不希望排序,则不能选择流式传输。

档案1

Tom     25
Pete    30
Kevin   26

文件2

Neil    28
Chris   31
Joe     27

合并文件

Chris   31
Joe     27
Kevin   26
Neil    28
Pete    30
Tom     25