apache-flink - 流文件接收器:跟踪零件文件何时完成
问题描述
我有使用 StreamingFileSink 将记录写入远程文件系统的工作。我想建立一个包含记录的部分文件的索引。有没有办法使用 Flink API 来实现这一点?或者有没有办法知道零件文件已经完成,我现在可以离线处理它以进行索引?
解决方案
在 Flink 文档的日常构建中,详细描述了 StreamingFileSink的部分文件生命周期。
简短的回答是,零件文件在可以安全使用时被重命名——“安全”意味着文件已关闭(不会发生进一步的写入)并设置了检查点。此时文件名将从 更改part-subtaskIndex-partFileIndex.inprogress.uid
为part-subtaskIndex-partFileIndex
。例如,名称可能从 更改part-1-0.inprogress.ea65a428-a1d0-4a0b-bbc5-7a436a75e575
为part-1-0
。
请注意,StreamingFileSink 的正确操作需要启用检查点。
回到问题的第一部分——您能否使用公共 API 确定哪个部分文件包含给定记录?我相信这是由KeyGroupRangeAssignment.assignKeyToParallelOperator完成的。
有关如何组织键控状态的说明,请参阅A Deep Dive into Rescalable State in Apache Flink。
推荐阅读
- vue.js - Vue 不使用 Webpack 渲染模板,只考虑运行时构建
- python - 无法在 Visual Studio Code 中调试 Flask 应用程序
- javascript - 错误的
- 标签行为
- javascript - JS函数未从动态加载的元素中调用
- java - 如何使用java中的超级函数将数据传递给父类?
- python - Base64 图像未在 Internet Explorer 中显示
- javascript - 用一个 JQuery 请求请求两个文件
- mysql - 错误代码:1215。--无法添加外键约束
- django - Django 查询 - 如何在 5 分钟内获取并发记录数?
- google-api - 是否可以使用 People API 访问和创建外部 G Suite 域联系人?