MapReduce服务 MRS-FlinkServer对接HDFS:Flink对接HDFS分区

时间:2023-11-01 16:25:25

Flink对接HDFS分区

  • Flink对接HDFS支持自定义分区。

    Flink文件系统分区支持使用标准的Hive格式。不需要将分区预先注册到表目录中,分区是根据目录结构推断。

    例如,根据下面的目录分区的表将被推断为包含日期时间和小时分区。
    path└── datetime=2021-09-03    └── hour=11        ├── part-0.parquet        ├── part-1.parquet    └── hour=12        ├── part-0.parquet└── datetime=2021-09-24    └── hour=6        ├── part-0.parquet
  • 分区文件的滚动策略。

    分区目录中的数据被拆分为part文件,每个分区将至少包含一个part文件,用于接收sink的子任务的数据写入。

    如下参数介绍分区文件如何进行滚动。

    配置项

    默认值

    类型

    描述

    sink.rolling-policy.file-size

    128MB

    MemorySize

    分区文件达到该阈值后,进行滚动。

    sink.rolling-policy.rollover-interval

    30min

    Duration

    分区文件在滚动前可以保持打开的最长持续时间。

    sink.rolling-policy.check-interval

    1min

    Duration

    检查基于时间的滚动策略的时间间隔。

  • 分区目录的文件合并。
    支持文件压缩,允许应用程序具有更小的检查点间隔,而无需生成大量文件。

    仅压缩单个检查点中的文件,即生成的文件数量至少与检查点数量相同。合并前的文件是不可见的,因此文件的可见性是:检查点间隔+压缩时间之后。如果压缩时间太长,将延长检查点的时间段。

    配置项

    默认值

    类型

    描述

    auto-compaction

    false

    Boolean

    是否启用自动压缩。数据将写入临时文件。检查点完成后,检查点生成的临时文件将被压缩。压缩前临时文件不可见。

    compaction.file-size

    none

    MemorySize

    压缩目标文件大小,默认值为滚动文件大小。

  • 分区文件的提交。
    文件写入分区后,通常需要通知下游应用程序。如将分区添加到Hive元存储中,或在目录中写入_SUCCESS文件。分区文件的提交操作基于触发器和策略的组合方式。
    • 分区文件提交触发器相关配置

      配置项

      默认值

      类型

      描述

      sink.partition-commit.trigger

      process-time

      String

      • process-time:基于计算节点的系统时间,它既不需要分区时间提取,也不需要生成watermark。即“当前系统时间”超过“分区创建时的系统时间”加上“延迟”时间,就提交分区。
      • partition-time:基于从分区提取的时间,它需要生成watermark。即“watermark时间”超过“从分区提取的时间”加上“延迟”时间,就提交分区。

      sink.partition-commit.delay

      0 s

      Duration

      分区在延迟时间之前不会提交。如果是每日分区,则应为“1 d”,如果是每小时分区,则应为“1 h”。

    • 分区问文件提交策略相关配置

      配置项

      默认值

      类型

      描述

      sink.partition-commit.policy.kind

      -

      String

      提交分区的策略。

      • metastore:将分区添加到元存储。只有hive表支持元存储策略,文件系统通过目录结构管理分区。
      • success-file:将success-file文件添加到目录中。
      • 两者可以同时配置,即:'sink.partition-commit.policy.kind'='metastore,success-file'。

      sink.partition-commit.policy.class

      -

      String

      用于实现分区提交策略接口的分区提交策略类。

      仅在自定义提交策略中生效。

      sink.partition-commit.success-file.name

      _SUCCESS

      String

      success-file分区提交策略的文件名,默认值为_SUCCESS。

support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24247.html