#apache-spark #pyspark #spark-streaming #spark-structured-streaming
#apache-spark #pyspark #spark-streaming #spark-structured-streaming
Вопрос:
У меня есть структурированное потоковое задание spark, которое считывает таблицу сопоставления из cassandra и deltalake и соединяется с потоковым df. Я хотел бы понять точный механизм здесь. Попадает ли spark в эти источники данных (cassandra и deltalake) для каждого цикла микропереработки? Если это так, я вижу в spark web ui, что эти таблицы читаются только один раз. Пожалуйста, помогите мне понять это. Заранее спасибо
Комментарии:
1. показать код, показать код
2. Я могу дать очень краткий обзор потока инструкций 1) Прочитать потоковые данные из темы kafka 2) Прочитать таблицу cassandra 3) Присоединиться к вышеуказанным 2 dfs 4) написать в другую тему
Ответ №1:
«Попадает ли spark в эти источники данных (cassandra и deltalake) для каждого цикла микропереработки?»
Согласно книге «Learning Spark, 2-е издание» от O’Reilly о соединениях со статическим потоком упоминается, что статический фрейм данных считывается в каждом микропакете.
Чтобы быть более точным, я нахожу следующий раздел в книге весьма полезным:
- Потоково-статические соединения являются операциями без сохранения состояния и, следовательно, не требуют каких-либо водяных знаков
- Статический фрейм данных считывается повторно при объединении с потоковыми данными каждого микропакета, поэтому вы можете кэшировать статический фрейм данных для ускорения чтения.
- Если базовые данные в источнике данных, для которого был определен статический фрейм данных, изменяются, будут ли эти изменения видны потоковым запросом, зависит от конкретного поведения источника данных. Например, если статический фрейм данных был определен для файлов, изменения в этих файлах (например, добавления) не будут обнаружены до перезапуска потокового запроса.
При применении соединения «статический поток» предполагается, что статическая часть вообще не меняется или меняется медленно. Если вы планируете объединить два быстро меняющихся источника данных, необходимо переключиться на объединение «поток-поток».
Комментарии:
1. Спасибо, Майк. Это помогает. И да, я смог подтвердить это поведение. Пробовал кэшировать статический фрейм данных, и производительность снизилась.