MAPREDUCE服务 MRS-创建FlinkServer作业写入数据至HDFS文件系统:Flink对接HDFS分区

时间:2024-11-28 01:44:37

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的子任务的数据写入。

    如下参数介绍分区文件如何进行滚动。
    表1 分区文件的滚动策略

    配置项

    默认值

    类型

    描述

    sink.rolling-policy.file-size

    128MB

    MemorySize

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

    sink.rolling-policy.rollover-interval

    30min

    Duration

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

    sink.rolling-policy.check-interval

    1min

    Duration

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

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

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

    表2 分区目录的文件合并

    配置项

    默认值

    类型

    描述

    auto-compaction

    false

    Boolean

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

    compaction.file-size

    none

    MemorySize

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

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

    配置项

    默认值

    类型

    描述

    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”。

    表4 分区文件提交策略相关配置

    配置项

    默认值

    类型

    描述

    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