gpt4 book ai didi

hadoop - 连续摄取的 HDFS 文件压缩

转载 作者:行者123 更新时间:2023-12-02 19:12:48 25 4
gpt4 key购买 nike

我们在 HDFS 中几乎没有几张表,这些表正在变得大约。每天 40k 新文件。我们需要每两周压缩一次这些表,为此我们需要停止摄取。

我们每 30 分钟从 kafka 获取数据并添加到 HDFS(Hive 外部表)中的 spark 摄取。数据一被摄取就被查询,我们的 SLA 不到一个小时,所以我们不能增加批处理间隔。

这些表是两个字段的分区,我们不断获取旧数据,因此大多数分区在每个注入(inject)批处理期间都会更新

例如:
/user/head/warehouse/main_table/state=CA/store=macys/part-00000-017258f8-aaa-bbb-ccc-wefdsds.c000.snappy.parquet

我们正在寻找减少文件创建数量的方法,但即便如此,我们也必须每 3/4 周(如果不是两周)进行一次压缩。

由于大多数分区都在不断更新,我们需要在开始压缩之前停止注入(inject)(约 1 天),这会影响我们的用户。

我正在寻找在不停止摄取的情况下自动压缩的方法?

最佳答案

所选择的分区方案有点不幸。您仍然可以做几件事。我依赖于您可以在 Hive 中以原子方式更改分区位置的事实(更改表 ... 分区 ... 设置位置):

  • 将分区的 hdfs 目录复制到不同的位置
  • 压缩复制数据
  • 复制自第 1 步以来摄取的新文件
  • 执行“alter table ... partition ... set location”以将 Hive 指向新的压缩位置。
  • 开始摄取到这个新位置(如果此步骤很棘手,您也可以将原始分区位置中的“小”文件替换为其压缩版本,然后再次执行“更改表...分区...设置位置”将 Hive 指向原始分区位置。

  • 您必须保持此过程连续运行,逐个分区迭代。

    关于hadoop - 连续摄取的 HDFS 文件压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62098654/

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