Кафка KTable: Как мы можем запланировать материализацию - PullRequest
0 голосов
/ 13 мая 2018

Есть ли способ настроить расписание, при котором данные в KTable должны сохраняться (.to ()) в теме?По сути, позволяет KTable накапливать все данные, и в определенное время данные записываются в тему.

1 Ответ

0 голосов
/ 14 мая 2018

Однако явного контроля нет, KTable внутренне кэширует нисходящие данные для подавления последовательных обновлений одного и того же ключа (см. https://kafka.apache.org/11/documentation/streams/developer-guide/memory-mgmt.html и https://www.confluent.io/blog/watermarks-tables-event-time-dataflow-model/).. В то же время этот кэш каждый раз очищается Kafka. Потоки фиксируют.

Таким образом, если кэш достаточно велик для хранения всех данных, вы можете имитировать желаемое поведение, настроив commit.interval.ms соответствующим образом. Обратите внимание, что это может быть только приближением желаемого поведения.

В качестве альтернативы вы можете создать собственное решение с помощью Punctuations. Идея заключалась бы в том, чтобы не записывать какие-либо данные с помощью оператора KTable#to(), а использовать график пунктуации для сканирования всего хранилища и записи данных в тему. Этот подход довольно продвинутый и несколько «хакерский», хотя и не является чистым решением.

...