Соединение таблицы потоков Kafka Streams - что делать, если в таблице нет ключа? - PullRequest
0 голосов
/ 14 января 2019

В приведенном здесь примере: https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/PageViewRegionExample.java есть соединение KStream и KTable.

А в драйвере https://github.com/confluentinc/kafka-streams-examples/blob/5.1.0-post/src/main/java/io/confluent/examples/streams/PageViewRegionExampleDriver.java отправляет пользователей в тему пользователей, а просмотры страниц - в тему просмотра страниц (с пользователем внутри представления).

Однако в этом примере мы сначала создаем KStream для темы просмотров страниц, затем KTable для темы профилей пользователей и затем присоединяемся к ним. Предполагая, что приложение не просто загружает каждый фрагмент данных из обоих потоков перед выполнением объединения, что произойдет, если появится представление, и профиль пользователя еще не был сохранен в таблице?

1 Ответ

0 голосов
/ 14 января 2019

Если KTable не будет загружен до того, как события в stream появятся leftJoin будет иметь значение NULL на сайте KTable, и join не вернет joinValue.

Рекомендуется запустить приложение Kafka Streams, загрузить данные в тему, которую использует KTable (какой-либо производитель), а затем начать выдавать событие в тему потока .

Интересная презентация о присоединении к Kafka Streams была на саммите Kafka (Сан-Франциско 2018), видео можно найти: Просмотр видео и слайдов Дзен и искусство потокового соединения - что, когда и почему

...