首页 笔记 图片 查字 
所属分类:Flink
浏览:36
内容:

参考:

https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/connectors/datastream/filesystem/#file-sink https://nightlies.apache.org/flink/flink-docs-release-1.16/zh/docs/connectors/datastream/filesystem/#part-%e6%96%87%e4%bb%b6%e7%94%9f%e5%91%bd%e5%91%a8%e6%9c%9f



要点:
File Sink 将传入的数据写入存储桶中。考虑到输入流可以是无界的,每个桶中的数据被组织成有限大小的 Part 文件。 完全可以配置为基于时间的方式往桶中写入数据,比如可以设置每个小时的数据写入一个新桶中。这意味着桶中将包含一个小时间隔内接收到的记录。
桶目录中的数据被拆分成多个 Part 文件。对于相应的接收数据的桶的 Sink 的每个 Subtask,每个桶将至少包含一个 Part 文件。将根据配置的滚动策略来创建其他 Part 文件。 对于 Row-encoded Formats(参考 Format Types)默认的策略是根据 Part 文件大小进行滚动,需要指定文件打开状态最长时间的超时以及文件关闭后的非活动状态的超时时间。 对于 Bulk-encoded Formats 在每次创建 Checkpoint 时进行滚动,并且用户也可以添加基于大小或者时间等的其他条件。

Part 文件生命周期
为了在下游使用 FileSink 作为输出,需要了解生成的输出文件的命名和生命周期。

Part 文件可以处于以下三种状态中的任意一种:
In-progress :当前正在写入的 Part 文件处于 in-progress 状态
Pending :由于指定的滚动策略)关闭 in-progress 状态文件,并且等待提交
Finished :流模式(STREAMING)下的成功的 Checkpoint 或者批模式(BATCH)下输入结束,文件的 Pending 状态转换为 Finished 状态