hadoop-getmerge有替代方案吗?

5kgi1eie  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(394)

我试图用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,但它不起作用。。

nkcskrwz

nkcskrwz1#

hdfs命令 -cat 这个选项应该有用。管道结果 -cat 命令到 -put 命令。

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

hgncfbus2#

流媒体可能会有所帮助。但是,合并的文件将按排序顺序排列(第一个选项卡之前的文本将是键)。如果排序是不可取的,那么流是不是一个选项。

文件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
vdzxcuhz

vdzxcuhz3#

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

相关问题