Size: a a a

2019 September 02

t

tenKe in Moscow Spark
Mikhail
Привет, чат! Поделитесь опытом кто как в стриминговых джобах обновляет static DataFrame. Есть задача джойнить поток из Кафки с батчевыми данными из БД. При этом желательно БД читать не чаще раза в день, поэтому данные после чтения кешируются в датафрейм. Но как правильно обновлять такой датафрейм без рестарта стриминговой джобы?
streamDf.writeStream.foreachBatch
источник

t

tenKe in Moscow Spark
spark 2.4.0+
источник

t

tenKe in Moscow Spark
и внутри обновляй чо хочешь)
источник

t

tenKe in Moscow Spark
либо останавливай стрим, обновляй свой df и запускай стрим заного с чекпоинта
источник

t

tenKe in Moscow Spark
внутри кода естессно
источник

M

Mikhail in Moscow Spark
Андрей, спасибо!
источник

M

Mikhail in Moscow Spark
До 2.4 foreachBatch нету же, да?
источник

GP

Grigory Pomadchin in Moscow Spark
Mikhail
До 2.4 foreachBatch нету же, да?
ага, новая фича
источник

GP

Grigory Pomadchin in Moscow Spark
источник

G

George in Moscow Spark
источник

G

George in Moscow Spark
источник

G

George in Moscow Spark
Совпадение?
источник

AS

Andrey Sutugin in Moscow Spark
Mikhail
Привет, чат! Поделитесь опытом кто как в стриминговых джобах обновляет static DataFrame. Есть задача джойнить поток из Кафки с батчевыми данными из БД. При этом желательно БД читать не чаще раза в день, поэтому данные после чтения кешируются в датафрейм. Но как правильно обновлять такой датафрейм без рестарта стриминговой джобы?
Можно добавить кастомный листенер, хранить в аккомуляторе последнюю отсечку, и в листенере, если прошло нужное время обновлять кеш
источник

M

Mikhail in Moscow Spark
Andrey Sutugin
Можно добавить кастомный листенер, хранить в аккомуляторе последнюю отсечку, и в листенере, если прошло нужное время обновлять кеш
Листенер будет срабатывать на onQueryProgress()?
источник

M

Mikhail in Moscow Spark
tenKe
либо останавливай стрим, обновляй свой df и запускай стрим заного с чекпоинта
@tenKe , код для рестарта query будет примерно такой? https://www.codepile.net/pile/gEV9YmNa
источник

GP

Grigory Pomadchin in Moscow Spark
Mikhail
Листенер будет срабатывать на onQueryProgress()?
да
источник

t

tenKe in Moscow Spark
Mikhail
@tenKe , код для рестарта query будет примерно такой? https://www.codepile.net/pile/gEV9YmNa
примерно. Не забудь, что awaitTermination бросается исключениями
источник

M

Mikhail in Moscow Spark
Tathagata Das из Databricks пишет, что оба метода (периодический рестарт и листенер) - норм, но типа с листенером он асинхронный и простоя будет меньше
источник

AS

Andrey Sutugin in Moscow Spark
Mikhail
Листенер будет срабатывать на onQueryProgress()?
Да, уже ответили, так и есть, свои тонкости, но это работает...
источник
2019 September 03

DZ

Dmitry Zuev in Moscow Spark
Коллеги, кто использует k8s spark operator?
Какие есть способы дождаться выполнения джобы(batch) при деплое через helm?
источник