我尝试使用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,但它无法正常工作..
答案 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)
流式传输可能有所帮助。但是,合并的文件将按排序顺序排列(第一个选项卡之前的文本将是键)。如果不希望排序,则不能选择流式传输。
Tom 25
Pete 30
Kevin 26
Neil 28
Chris 31
Joe 27
Chris 31
Joe 27
Kevin 26
Neil 28
Pete 30
Tom 25