В ежедневной сборке документации 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 .
Для объяснения того, как организовано состояние ключа, см. Глубокое погружение в пересчитываемое состояние в Apache Flink .