hadoop-getmerge有替代方案吗?
我尝试使用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-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-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