我试图用hadoop get merge在一个集群中合并80 gb的文件,
但由于hadoop get merge具有将文件从hdfs复制到本地文件系统的特性,我必须复制到本地,然后再次将copyfromlocal复制到hdfs,
hadoop fs-getmerge hdfs:///path在\u hdfs/*./本地\u路径中
hadoop fs-copyfromlocal./local\u路径hdfs://destination_hdfs_path/
我的问题是本地数据节点小于80GB,
我需要知道有没有一个替代-getmerge的方法,其中合并直接发生在hdfs到hdfs之间
我也试过hadoop-cat,但它不起作用。。
3条答案
按热度按时间nkcskrwz1#
hdfs命令
-cat
这个选项应该有用。管道结果-cat
命令到-put
命令。hgncfbus2#
流媒体可能会有所帮助。但是,合并的文件将按排序顺序排列(第一个选项卡之前的文本将是键)。如果排序是不可取的,那么流是不是一个选项。
文件1
文件2
合并的文件
vdzxcuhz3#
实际上没有真正的选择。您可以通过mapreduce或spark作业(将输出的并行度设置为1)获得相同的结果,但是没有使用纯hdfs命令的解决方案。