Рассмотрение потокового и искрового SQL - PullRequest
0 голосов
/ 03 мая 2018

Я использую spark stream (scala) и получаю записи звонков клиентов в колл-центр через kafka через каждые 20 минут. Эти записи преобразуются в формат данных rdd и более поздних, чтобы использовать spark sql. У меня есть бизнес-пример, когда я хочу определить всех клиентов, которые звонили более 3 раз за последние два часа.

Каков наилучший подход для этого? Должен ли я продолжать вставлять в таблицу кустов все записи, полученные в каждом пакете, и запускать отдельный скрипт, чтобы продолжать запрашивать, кто сделал 3 звонка за последние два часа, или есть еще один способ лучше использовать возможности искры в памяти?

Спасибо.

1 Ответ

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

Для этого вида использования вы можете получить результат, используя искру (Улей не требуется). У вас должен быть какой-то уникальный идентификатор клиента, чтобы вы могли подготовить запрос типа

ROW_NUMBER() OVER(PARTITION BY cust_id ORDER BY time DESC) as call_count

и вам нужно применить фильтр для данных за последние 2 часа с call_count=3, чтобы вы могли получить ожидаемый результат. Затем вы можете установить этот искровой скрипт в crontab или любые другие методы автозапуска.

...