Как обновляются конвейеры?

Когда выполняется обновление конвейера, обновляются материализованные представления и потоковые таблицы, определенные в этом конвейере, чтобы их результаты отражали текущее состояние исходных данных. Как обновляется набор данных, зависит от типа и типа обновления. Сведения о активации обновлений и управлении ими см. в разделе "Запуск обновления конвейера".

Типы обновления

По умолчанию каждое материализованное представление и каждая потоковая таблица в конвейере обновляются при каждом обновлении. В следующей таблице приведены сведения о том, как работает каждый тип обновления:

Тип обновления Материализованное представление Потоковая таблица
Обновление (по умолчанию) Обновляет результаты, отражающие текущие результаты определяемого запроса. Azure Databricks проверяет затраты и выполняет добавочное обновление, когда это более эффективно. Обрабатывает новые записи в соответствии с логикой, определённой в потоковых таблицах и потоках.
Полное обновление Перекомпьютирует результаты, чтобы отразить текущие результаты определяемого запроса. Очищает данные из таблиц потоковой передачи, очищает контрольные точки от потоков и повторно обрабатывает все записи из источника данных.
Сброс контрольных точек потока передачи данных Неприменимо к материализованным представлениям. Очищает контрольные точки от потоков, но не очищает данные из таблиц потоковой передачи, а затем повторно обрабатывает все записи из источника данных.

Обновление (по умолчанию)

Обновление по умолчанию обновляет набор данных, чтобы отразить текущие результаты определения запроса.

Потоковые таблицы по своей сути являются инкрементными. Обновление потоковой таблицы оценивает только записи, полученные с момента последнего обновления, и добавляет их с помощью текущего определения таблицы. Старые записи не обрабатываются повторно, поэтому изменения, влияющие на уже записанные данные, не применяются. Другими словами, обновление потоковой таблицы по умолчанию предполагает компромисс: корректность данных снижается ради сокращения временных и ресурсных затрат. Чтобы повторно обработать старые данные, выполните полное обновление или сбросьте контрольные точки процесса.

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

  • Добавочное обновление определяет изменения с момента последнего обновления и объединяет только новые или измененные данные.
  • Полное обновление выполняет весь запрос и заменяет существующие данные, если добавочное обновление невозможно или не является экономически эффективным.

По умолчанию Azure Databricks использует модель затрат для выбора более экономичного метода. Вы можете переопределить этот выбор с помощью политики обновления. Сведения о семантике, требованиях и поддерживаемых инструкциях SQL для инкрементального обновления см. в разделе Инкрементальное обновление для материализованных представлений.

Полное обновление

Полное обновление повторно обрабатывает все записи из исходных данных с помощью логики, которая определяет набор данных:

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

Поскольку при полном обновлении повторно обрабатываются все исходные данные, время и затраты зависят от объёма этих данных. Databricks рекомендует выполнять полное обновление только при необходимости, например если изменение определения или схемы несовместимо с существующими данными. Полное обновление потоковой таблицы может привести к потере записей, если источник больше не хранит исходные данные, например если срок хранения топика Kafka уже истёк.

Сведения о том, когда и как выполнить полное обновление таблицы потоковой передачи, см. в разделе "Полное обновление" для потоковых таблиц.

Сбросить контрольные точки

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

Используйте это, если требуется повторно обработать источник потоковой передачи для выбранных потоков, например после изменения логики потока без усечения таблицы.

Сброс контрольных точек выполняется через REST API конвейеров Lakeflow. Инструкции см. в разделе "Запуск обновления конвейера" для очистки контрольных точек выборочной потоковой передачи.

Дополнительные ресурсы