#apache-spark #spark-streaming #spark-structured-streaming #azure-eventhub
#apache-spark #искровая потоковая передача #spark-structured-streaming #azure-eventhub
Вопрос:
Мое текущее структурированное потоковое приложение записывает данные в огромную дельта-таблицу. Когда я (останавливаю поток) и указываю на запись в совершенно новую дельта-таблицу:
- Это становится намного быстрее — длительность пакета уменьшается почти на 1/4
- Скорость ввода увеличивается почти в 3 раза
Я понимаю, что это может стать быстрее, поскольку любые агрегации / записи, которые он выполняет в старой / большей таблице, не нужны в новой таблице. Но я надеюсь, что кто-нибудь сможет объяснить изменение скорости ввода?
Источник — Azure EventHubs.
Спасибо!
Комментарии:
1. Да, Майк. Вот как это представлено в блокноте Databricks. Извиняюсь, я не уточнил это в своем вопросе.
Ответ №1:
Отвечая на мой собственный вопрос:
Логика, лежащая в основе скорости ввода и скорости обработки, выглядит следующим образом:
Input rate = numInputRows (or batch size )/ Trigger Interval in secs
Processing Rate = numInputRows (or batch size )/ Batch Duration in secs
без интервала запуска они должны быть одинаковыми, потому что BatchDuration = интервал запуска.
Таким образом, при использовании таблицы большего размера с большим количеством разделов запись и агрегирование занимают больше времени, что увеличивает продолжительность пакета и тем самым снижает скорость ввода (и скорость обработки). Таким образом, это должно объяснить противоположный случай для небольших целевых таблиц с более высокой скоростью ввода / обработки.