приемник потокового файла: отслеживать, когда файл детали завершен - PullRequest
1 голос
/ 30 октября 2019

У меня есть задание, которое записывает записи в удаленную файловую систему с помощью StreamingFileSink. Я хотел бы создать индекс, в котором файл части содержит запись. Есть ли способ добиться этого с помощью Flink API? Или есть способ узнать, что файл детали закончен, и теперь я могу обрабатывать его в автономном режиме для индексации?

1 Ответ

0 голосов
/ 30 октября 2019

В ежедневной сборке документации 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 .

...