Возможно ли, чтобы два процесса Spark одновременно считывали поток в одной дельта-таблице?

#apache-spark #spark-streaming #databricks

#apache-spark #искровая передача #databricks

Вопрос:

Я получаю данные в одной дельта-таблице, и я хочу, чтобы два потребителя обрабатывали их чтение:

У меня в разных банках есть эти коды:

1) Процесс Spark для вычисления агрегатов в режиме реального времени.

 val df_aggregations = spark.readStream
     .format("delta")
     .option("ignoreDeletes", "true")
     .option("ignoreChanges", "true")
     .option("checkpointLocation", configuration.delta_aggregation_checkpoint)
     .load(configuration.delta_table)
 

2) Процесс Spark для получения новых значений в режиме реального времени.

 val df_news = spark.readStream
.format("delta")
.option("ignoreDeletes", "true")
.option("ignoreChanges", "true")
.option("checkpointLocation", configuration.delta_news_checkpoint)
.load(configuration.delta_table)
 

Моя проблема в том, что я просто вижу, что один из процессов работает хорошо, я имею в виду, если я запускаю процесс 1) первым, чем 2) Я вижу хорошие результаты процесса 1), однако я не вижу результатов процесса 2), и если я запускаю процесс 2) сначалазатем я вижу результаты процесса 2), но я не вижу результатов процесса 1).

Ответ №1:

Да, у вас может быть N пользователей, обрабатывающих чтение в одной и той же дельта-таблице, просто вам нужно иметь разные файлы контрольных точек для каждого процесса.