HDFS 连接器为 Flink 内部依赖,支持分区文件。 在 Flink 中包含了该文件系统连接器,不需要添加额外的依赖。 相应的 jar 包可以在 Flink 工程项目的 /lib 目录下找到。 从文件系统中读取或者向文件系统中写入行时,需要指定相应的 format。
使用 Flink SQL Cli
:
CREATE TABLE hdfs_load_node ( id STRING, name STRING, uv BIGINT, pv BIGINT, dt STRING, `hour` STRING ) PARTITIONED BY (dt, `hour`) WITH ( 'connector'='filesystem', 'path'='...', 'format'='orc', 'sink.partition-commit.delay'='1 h', 'sink.partition-commit.policy.kind'='success-file' );
备注:文件格式明细可以查看Flink Formats
数据会被加载到文件的目录下的 part 文件中,每个分区接收到来之 subtask 的数据至少会为该分区生成一个 part 文件。同时可以配置滚动策略 来生成 part 文件,生成 part 文件会将 in-progress part 文件关闭。该策略基于大小和指定文件被打开的超时时间来生成 part 文件。
支持文件能力,允许在较小的 checkpoint 下不产生大量的小文件。
分区数据写入完成后,一般需要通知下流应用。如:更新 hive 的元数据信息或者 hdfs 目录生成 _SUCCESS 文件。 分区提交策略是配置的,分区提交行为基于 triggers 和 policies 的组合。
备注:分区提交仅支持动态分区插入。
分区提交策略定义了分区提交使用的具体策略。