gpt4 book ai didi

hadoop - 合并 hdfs 文件

转载 作者:可可西里 更新时间:2023-11-01 14:08:45 27 4
gpt4 key购买 nike

我在 HDFS 中有 1000 多个文件可用,命名约定为 1_fileName.txtN_fileName.txt。每个文件的大小为 1024 MB。我需要将这些文件合并到一个(HDFS)中并保持文件的顺序。说 5_FileName.txt 应该只追加在 4_fileName.txt

之后

执行此操作的最佳和最快方法是什么。

有没有什么方法可以在不复制数据节点之间的实际数据的情况下执行这种合并?例如:获取此文件的 block 位置并使用这些 block 位置在名称节点中创建一个新条目(文件名)?

最佳答案

没有有效的方法可以做到这一点,您需要将所有数据移动到一个节点,然后再返回到 HDFS。

执行此操作的命令行脚本如下所示:

hadoop fs -text *_fileName.txt | hadoop fs -put - targetFilename.txt

这会将与 glob 匹配的所有文件抓取到标准输出,然后您将该流通过管道传输到 put 命令并将流输出到名为 targetFilename.txt 的 HDFS 文件

你遇到的唯一问题是你所追求的文件名结构——如果你有固定的宽度,用零填充数字部分会更容易,但在它的当前状态下你会得到一个意想不到的字典顺序 (1, 10, 100、1000、11、110 等)而不是数字顺序(1、2、3、4 等)。您可以通过将 scriptlet 修改为:

hadoop fs -text [0-9]_fileName.txt [0-9][0-9]_fileName.txt \
[0-9][0-9[0-9]_fileName.txt | hadoop fs -put - targetFilename.txt

关于hadoop - 合并 hdfs 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14831117/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com