Как получить агрегированные данные за определенный день в потоковой передаче с искрой
У меня есть одно искробезопасное паровое задание, которое читает потоки из kafka и записывает вывод в HDFS. Моя проблема в том, что мне нужны сводные результаты за весь день до определенного времени. Поскольку структурированная потоковая передача Spark не поддерживает режим завершения / обновления, есть ли способ добиться того же самого?
если я получу данные в 10.00, мне нужен агрегированный результат до 10.00 для текущей даты...
может кто-нибудь помочь, как добиться того же?
1 ответ
Я не уверен, что точно понимаю ситуацию, но позвольте мне попытаться ответить.
Я бы порекомендовал сделать двухэтапный процесс:
- Spark Streaming сохраняет мини-пакеты во временную папку формата:
/yyy-mm-dd/<offset from the day start>.parquet
2019-02-06/100000.parquet
, 2019-02-06/200000.parquet
- Другая искровая работа читает из соответствующего местоположения и выполняет агрегацию и фильтрацию времени.
Вы можете использовать библиотеку, как Луиджи, чтобы управлять ими.