【发布时间】:2019-02-23 02:27:49
【问题描述】:
我在 HDFS 中有 1000 多个文件可用,命名约定为 1_fileName.txt 到 N_fileName.txt。每个文件的大小为 1024 MB。
我需要将这些文件合并为一个(HDFS)并保持文件的顺序。说5_FileName.txt 应该只附加在4_fileName.txt 之后
执行此操作的最佳和最快方法是什么。
有没有什么方法可以在不复制数据节点之间的实际数据的情况下执行这种合并?例如:获取此文件的块位置并在名称节点中使用这些块位置创建一个新条目(文件名)?
【问题讨论】:
-
为什么需要合并它们?如果它真的是非常小的文件,这将是有意义的。
-
Apache HBase 将其数据存储到 HDFS 中,在压缩期间合并文件 (HFiles):hbase.apache.org/book/regions.arch.html#compaction。我目前不知道它是如何做到的,但我会在这里调查并写一个答案。