Обновление кэшированного кадра данных Spark после заданной частоты - PullRequest
0 голосов
/ 04 июля 2018

Я разрабатываю решение SparkStreaming, в котором таблица кустов кэшируется как Dataframe, а затем события потока объединяются с кэшированным Dataframe для получения результата.

Однако проблема в том, что таблица Hive будет обновляться с определенной частотой, и, следовательно, кэшированный Dataframe также должен обновляться соответствующим образом.

Есть ли какой-нибудь способ, скажем, некоторый TTL или любой другой механизм вокруг кэшированного Dataframe, в котором данные обновляются автоматически через определенный промежуток времени с помощью обновленных записей таблицы Hive.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Есть обходной путь для вашего случая. В отдельном потоке запустите одно задание cron или запланируйте задание с помощью кода, следующего за триггером, через некоторый интервал, который вы можете установить в соответствии со своими требованиями.

val spark: SparkSession = ???
spark.sql("refresh table <your table name>")
0 голосов
/ 04 июля 2018

Давайте разберемся с понятием, функция Cache () сохраняет фрейм данных в памяти, поэтому, если вы будете выполнять какие-либо дальнейшие действия с этим фреймом данных, тогда не будет проходить через его DAG с момента создания фрейма данных, это полезно только в том случае, если вы выполните различные действия на этом фрейме данных, когда вы сохраняете данные в памяти, и первоначально для их хранения потребуется время, но дальнейшие действия будут выполняться быстрее. В соответствии с вашим сценарием я не вижу необходимости кэшировать данные, поскольку его потоковая платформа без кэширования выполняет действие с данными и сохраняет результат в HDFS в режиме добавления. Кэширование информационного кадра займет вашу кластерную память.

На ваш вопрос, насколько мне известно, нет механизма TTL для обновления кэшированного кадра данных. Вам необходимо снова прочитать данные и кэшировать их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...