流文件接收器:跟踪零件文件何时完成

时间:2019-10-30 00:38:54

标签: apache-flink

我有一份使用StreamingFileSink将记录写到远程文件系统的作业。我想建立一个零件文件包含记录的索引。有没有一种方法可以使用Flink API来实现?还是有办法知道零件文件已完成,我现在可以脱机处理该文件以进行索引了?

1 个答案:

答案 0 :(得分:0)

在Flink文档的日常版本中,详细描述了StreamingFileSink的part file lifecycle

简短的答案是,零件文件可以安全使用时被重命名-“安全”表示文件已关闭(不会再进行写入)并已建立检查点。此时,文件名将从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