hadoop-getmerge有替代方案吗?

hadoop-getmerge有替代方案吗?,hadoop,merge,yarn,hadoop2,Hadoop,Merge,Yarn,Hadoop2,我尝试使用hadoop get merge在集群中合并80 GB的文件 但由于hadoop get merge具有将文件从hdfs复制到本地文件系统的特性,因此我必须复制到本地,然后再次从本地复制到hdfs hadoop fs-getmergehdfs:///path_in_hdfs/*/本地路径 hadoop fs-copyFromLocal/local\u路径hdfs://Destination_hdfs_Path/ 我这里的问题是datanode local小于80 GB 我需要知道是否有

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

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

hadoop fs-getmergehdfs:///path_in_hdfs/*/本地路径

hadoop fs-copyFromLocal/local\u路径hdfs://Destination_hdfs_Path/

我这里的问题是datanode local小于80 GB

我需要知道是否有一种替代-getmerge的方法,其中合并直接从HDFS到HDFS进行


我也尝试过hadoop-cat,但它不起作用。

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

hdfs命令和
-cat
选项应该可以工作。将
-cat
命令的结果传输到
-put
命令

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

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

文件1 文件2 合并文件
mark91,你能帮助我如何使用mapreduce代码实现这一点吗?你只需要运行一个Hadoop流作业,并对输入和输出位置、输入和输出格式进行适当设置,并使用1作为还原数,使用IdentityMapper和IdentityReducer分别作为mapper和reducer类(在这里你可以找到一些文档:)
Tom     25
Pete    30
Kevin   26
Neil    28
Chris   31
Joe     27
Chris   31
Joe     27
Kevin   26
Neil    28
Pete    30
Tom     25