MAPREDUCE服务 MRS-创建FlinkServer作业写入数据至HDFS文件系统:Flink对接HDFS分区
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
检查基于时间的滚动策略的时间间隔。
- 分区目录的文件合并。
- 分区文件的提交。
文件写入分区后,通常需要通知下游应用程序。如将分区添加到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。
- MapReduce服务_什么是Loader_如何使用Loader
- MapReduce服务_什么是存算分离_如何配置MRS集群存算分离
- MapReduce服务_如何使用MapReduce服务_MRS集群客户端安装与使用
- MapReduce服务_什么是Flink_如何使用Flink
- MapReduce服务_什么是HDFS_HDFS特性
- Hudi服务_什么是Hudi_如何使用Hudi
- MapReduce服务_什么是Hive_如何使用Hive
- MRS备份恢复_MapReduce备份_数据备份
- MapReduce服务_什么是Hue_如何使用Hue
- MapReduce服务_什么是Flume_如何使用Flume