Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Полное обновление таблицы потоковой передачи удаляет все существующие данные и метаданные и перезапускает поток с самого начала. В частности, она усечет таблицу потоковой передачи, удаляет все данные контрольных точек и перезапускает процесс потоковой передачи с новыми контрольными точками для каждого потока записи в таблицу. На этой странице описывается, когда может потребоваться выполнить полное обновление, а также влияние полного обновления. Он также включает рекомендации по полному обновлению.
Инструкции по активации полного обновления см. в разделе "Запуск обновления конвейера".
Влияние на источники данных
Полное обновление удаляет все существующие данные из таблицы потоковой передачи. Если в источнике данных есть ограничения на хранение (например, разделы Kafka с короткими сроками хранения), некоторые исторические данные могут стать неустранимыми после полного обновления.
Например, если ваш источник — это Kafka с 24-часовым временем хранения, и по истечении этого времени выполняется полное обновление, старые сообщения больше не доступны и их невозможно обработать повторно.
Замечание
Полные обновления не рекомендуется использовать для рабочих нагрузок, связанных с потоковой передачей больших объемов данных, или когда удержание первоначальных данных мешает повторному воспроизведению исторических данных.
Если в потоковой таблице есть зависимые нижестоящие таблицы, конвейер завершается сбоем до тех пор, пока эти таблицы не будут полностью обновлены, если не включён параметр skipChangeCommits. Подчиненные материализованные представления также должны быть полностью обновлены.
Когда необходимо выполнить полное обновление
Полные обновления в декларативных конвейерах Spark Lakeflow должны быть активированы явным образом. Полное обновление можно выполнить, щелкнув на Полное обновление в интерфейсе конвейера или включив автоматическое полное обновление в Lakeflow Connect.
Полное обновление рекомендуется, если изменения препятствуют безопасному возобновлению потокового запроса из существующей контрольной точки или когда ранее обработанные данные становятся несогласованными с обновленной логикой, схемой или конфигурацией источника. В следующих разделах описаны распространенные сценарии.
Изменения схемы
Следующие изменения схемы в целевой таблице не совместимы с обратной совместимостью и требуют полного обновления:
- Переименование столбцов без включения режима сопоставления столбцов.
- Изменение столбцов дедупликации.
- Изменение типов данных столбцов, в том числе:
- Сужение типа (например,
BIGINT → INTилиDOUBLE → FLOAT). - Несовместимые изменения типов (например,
STRING → INT).
- Сужение типа (например,
- Жесткое удаление столбцов из схемы таблицы.
Для этих типов изменений схемы Databricks рекомендует создать новый столбец с требуемой схемой или именем, а затем использовать представление на основе таблицы потоковых данных для объединения старых и новых значений.
Изменения макета физических данных
Для следующих изменений макета физических данных требуется полное обновление:
- Переход с устаревшей секционирования в новую схему кластеризации.
Изменения источника входящего потока
Для следующих изменений вышестоящего источника требуется полное обновление:
- Изменение исходных таблиц, считываемых запросом потоковой передачи.
- Переключение между типами источников (например, от Kafka к Delta или от Auto Loader к Kafka).
- Изменение исходных расположений, таких как пути к таблицам или подписки на разделы Kafka.
- Удаление и повторное создание исходной таблицы Delta, даже если схема остается неизменной.
Изменения обработки с сохранением состояния
Для следующих изменений состояния обработки требуется полное обновление:
- Изменение агрегирования ключей группировки или агрегатных функций.
- Добавление или удаление агрегаций.
- Изменение ключей соединения или типов соединений.
- Добавление или удаление соединений.
- Изменение столбцов дедупликации или логики дедупликации.
Проблемы с непрерывностью данных
Полное обновление может потребоваться при компрометации непрерывности данных:
- Журналы CDC стали недоступными из-за истечения срока хранения.
- Повреждение или удаление каталога контрольной точки потоковой передачи.
- Повреждение или потеря файлов отслеживания схемы или местоположения схемы.
Дополнительные сведения о восстановлении конвейера из сбоя контрольной точки см. в статье "Восстановление конвейера из сбоя потоковой контрольной точки".
Ограничения
Следующие ограничения применяются к полным обновлениям. Ознакомьтесь с рекомендациями по работе с этими ограничениями.
- Полное обновление не обрабатывает данные, если источник не сохраняет полный исторический набор данных.
- Большие наборы данных могут создавать полные обновления дорогостоящими и трудоемкими.
- Подчиненные потребители, зависящие от таблицы, могут завершиться ошибкой или возвращать неполные результаты до завершения обновления.
Лучшие практики
| Ситуация | Лучшие практики |
|---|---|
| Проектирование для стабильности | Запланируйте схему, чтобы избежать изменений, требующих полного обновления. Добавление столбцов обычно является безопасным, при изменении существующих столбцов или схем секционирования обычно требуется повторное вычисление таблицы. |
| Трансляция из источников с короткими сроками хранения | Потоковая передача из источников, таких как темы Kafka, которые не имеют длительных периодов хранения, означает, что полное обновление ведет к потере данных, которые больше не находятся в источнике. Чтобы избежать потери исторических данных, потоковая передача необработанных данных в потоковую таблицу (бронзовая таблица в архитектуре медальона). Используйте гибкие типы столбцов (вариант или строку, например), чтобы избежать этой таблицы, требующей полного обновления при изменении вышестоящих данных. Эта таблица может хранить исторические данные и использоваться последующими таблицами потоковой передачи, отличающимися более строгими типами или другими структурными изменениями. Если нижестоящим таблицам требуется полное обновление, эта таблица содержит исторические данные, не требуя полного обновления. |
| Рассмотрите альтернативные варианты перед запуском полного обновления | Ниже представлены возможные альтернативы.
|
| Если требуется полное обновление | Следуйте приведенным ниже рекомендациям, если требуется полное обновление:
|
Чтобы заполнить данные после полного обновления, можно создать append onceпоток. При этом выполняется однократная обратная заливка и не продолжается после первой обратной заливки. Код остается в пакете обработки данных, и если пакет когда-либо будет полностью обновлён, то обратное заполнение запускается снова.