title: HDFS sidebar_position: 7

概览

HDFS 连接器为 Flink 内部依赖,支持分区文件。 在 Flink 中包含了该文件系统连接器,不需要添加额外的依赖。 相应的 jar 包可以在 Flink 工程项目的 /lib 目录下找到。 从文件系统中读取或者向文件系统中写入行时,需要指定相应的 format。

如何创建 HDFS 加载节点

SQL API 的使用

使用 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-inlong',
    'path'='...',
    'format'='orc',
    'sink.partition-commit.delay'='1 h',
    'sink.partition-commit.policy.kind'='success-file'
  );

File Formats

备注:文件格式明细可以查看Flink Formats

滚动策略

数据会被加载到文件的目录下的 part 文件中,每个分区接收到来之 subtask 的数据至少会为该分区生成一个 part 文件。同时可以配置滚动策略 来生成 part 文件,生成 part 文件会将 in-progress part 文件关闭。该策略基于大小和指定文件被打开的超时时间来生成 part 文件。

文件合并

支持文件能力,允许在较小的 checkpoint 下不产生大量的小文件。

分区提交

分区数据写入完成后,一般需要通知下流应用。如:更新 hive 的元数据信息或者 hdfs 目录生成 _SUCCESS 文件。 分区提交策略是配置的,分区提交行为基于 triggers 和 policies 的组合。

  • Trigger :分区提交时机可以基于分区的 watermark 或者基于处理时间(process-time)。
  • Policy :分区提交策略,内置策略包括提交 hive 元数据和生成 _SUCCESS 文件,同时支持自定策略,如生成 hive 的统计信息、合并小文件等。

备注:分区提交仅支持动态分区插入。

分区提交策略

分区提交策略定义了分区提交使用的具体策略。

  • metastore:仅在 hive 时支持该策略。
  • success: part 文件生成后会生成 ‘_SUCCESS’ 文件。