Окно потоков Кафки - PullRequest
0 голосов
/ 22 мая 2018

Исходя из фона Spark Streaming - получить представление о потоках Kafka.

У меня есть простое приложение Spark Streaming, которое читает из Kafka

и возвращает последнее событие для пользователя в этомминута

Примеры событий будут выглядеть так: {"user": 1, "timestamp": "2018-05-18T16:56:30.754Z", "count": 3}, {"user": 1, "timestamp": "2018-05-22T16:56:39.754Z", "count": 4}

Мне интересно, как это будет работать в Kafka Streams, так как кажется, что для каждого события есть выход - когда мой вариант использованияЭто уменьшить трафик.

Из моего чтения пока кажется, что это не так просто, и вам придется использовать API процессора.

В идеале я хотел бы использовать DSLвместо API процессора, так как я только начинаю смотреть на потоки Кафки, но мне кажется, что мне придется использовать метод punctuate API процессора для чтения из хранилища состояний каждые n секунд?

Iпользуюсь кафкой 0.11.0

1 Ответ

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

На уровне DSL Kafka Streams позволяет настраивать кэши KTable (по умолчанию включены), которые снижают нагрузку в нисходящем направлении.Кеш - это кэш LRU, который регулярно сбрасывается.Таким образом, хотя кэш-память снижает нагрузку на нисходящий поток, он не гарантирует, сколько выходных данных вы получите за окно.(См. https://docs.confluent.io/current/streams/developer-guide/memory-mgmt.html)

Если вам строго необходим один вывод для каждого окна, использование Processor API - правильный путь.

...