Загрузка уникальных записей в Kafka-Spark Streaming - PullRequest
0 голосов
/ 08 ноября 2018

У меня есть тема Kafka, получающая 10K событий в минуту, и потребитель Spark Streaming 2.3 в scala, написанный для получения и загрузки в Cassandra. Входящие события - это JSON, имеющий поле «идентификатор пользователя» среди других. Однако, если событие с тем же идентификатором пользователя появляется снова (даже с другим телом сообщения), тем не менее, я не хочу, чтобы это попадало в Cassandra. Таблица Cassandra растет каждую минуту и ​​каждый день, поэтому поиск всех идентификаторов пользователей, встречавшихся до этого момента путем извлечения таблицы в фрейм данных искры в памяти, невозможен, так как таблица будет становиться огромной. Как я могу лучше всего принимать уникальные записи?

Может ли updateStateByKey работать? И как долго можно поддерживать состояние? Потому что, если тот же идентификатор пользователя появится через год, я не хочу использовать его в Кассандре.

1 Ответ

0 голосов
/ 09 ноября 2018

Используйте внешнюю внешнюю БД с малой задержкой, такую ​​как Aerospike, или, если частота дубликатов низкая, вы можете использовать фильтр Блума / кукушки в памяти (то есть ~ 4 ГБ на 1 год при скорости 10 КБ в минуту) с перепроверкой совпадений через Кассандра не должна отказываться от событий в случае ложных срабатываний.

...