Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Внимание
Эта функция доступна в общедоступной предварительной версии для Databricks Runtime 13.3 LTS и выше.
При поддержке архивирования в Azure Databricks вы можете использовать облачные политики жизненного цикла на облачном объектном хранилище, содержащем таблицы Delta Lake. Включение поддержки архивации в таблице Delta Lake позволяет Azure Databricks игнорировать файлы старше указанного периода в таблице.
Политики жизненного цикла облака снижают затраты на хранение, перемещая старые файлы на архивный уровень хранения. Без поддержки архивирования политика жизненного цикла может нарушить выполнение запросов к таблице Delta Lake, поскольку файлы данных, считываемые этими запросами, больше недоступны. См. Почему стоит включать архивную поддержку?.
Когда использовать поддержку архивирования
Включите архивную поддержку в таблице, если все следующие параметры верны:
- Вы используете политику жизненного цикла, которая архивирует файлы данных таблицы на основе времени создания файла.
- Большинство запросов к таблице читают свежие данные или исключают архивные файлы.
- Запросы, требующие архивированных данных, встречаются редко, и вы можете дождаться, пока кто-то восстановит эти файлы в хранилище вашего облачного провайдера, прежде чем повторно запускать запрос. См. статью "Восстановление архивированных файлов".
Не пользуйтесь поддержкой архивации, если ваши запросы регулярно сканируют полную историю таблицы. Запросы, требующие архивных файлов, не работают. Архивная поддержка также не работает с политиками жизненного цикла, основанными на времени доступа или тегах. См. ограничения.
Требования
Azure Databricks поддерживает архивацию только для Архива Azure. Ознакомьтесь с документацией Azure по оптимизации затрат с помощью управления жизненным циклом.
Почему следует включить поддержку архивации?
Поддержка архивации поддерживает только запросы, которые возвращают корректные результаты без обращения к архивированным файлам. Эти запросы включают те, которые либо:
- Только метаданные запроса.
- Есть фильтры, которые не требуют сканирования архивированных файлов.
Все запросы, требующие данных в архивированных файлах, завершаются сбоем.
Внимание
Azure Databricks никогда не возвращает результаты для запросов, требующих архивных файлов для возврата правильного результата.
Включение поддержки архивации для таблицы в Azure Databricks не создает или не изменяет политики жизненного цикла, определенные для облачного хранилища объектов. См. раздел "Изменение правила перехода управления жизненного цикла".
Без архивной поддержки операции с таблицами Delta Lake могут не работать, потому что файлы данных или журналы транзакций перемещены в архивные расположения и становятся недоступны при запросе. Поддержка архивации вводит оптимизации, чтобы избежать запросов к архивным данным, когда это возможно. Он также добавляет новый синтаксис для идентификации файлов, которые должны быть восстановлены из архивного хранилища для выполнения запросов.
Запросы, оптимизированные для архивных данных
Поддержка архивирования в Azure Databricks оптимизирует эти запросы для таблиц Delta Lake.
| Запрос | Новое поведение |
|---|---|
SELECT * FROM <table_name> LIMIT <limit> [WHERE <partition_predicate>] |
Автоматически игнорировать архивированные файлы и возвращать результаты из данных в неархивированном уровне хранилища. |
Команды обслуживания Delta Lake: OPTIMIZE, ZORDER, ANALYZEPURGE |
Автоматически игнорировать архивированные файлы и выполнять обслуживание в остальной части таблицы. |
Операторы DDL и DML, которые перезаписывают данные или удаляют данные, включая REPLACE TABLE, INSERT OVERWRITE, TRUNCATE TABLE, и DROP TABLE |
Пометьте записи журнала транзакций для целевых архивированных файлов данных как удаленные. |
FSCK REPAIR TABLE |
Игнорировать архивные файлы и проверять только файлы, которые еще не обрабатываются в соответствии с политикой жизненного цикла. |
Ранние сообщения о сбоях и ошибках
Для запросов, которые должны сканировать архивные файлы для получения правильных результатов, настройка архивной поддержки Delta Lake имеет следующие эффекты:
- Запросы завершаются рано, если они пытаются получить доступ к архивным файлам, уменьшая объем вычислительных ресурсов и позволяя пользователям быстро адаптировать и повторно выполнять запросы.
- Сообщения об ошибках сообщают пользователям о сбое запроса из-за попытки запроса получить доступ к архивным файлам.
Пользователи могут создавать отчет о файлах, которые должны быть восстановлены с помощью синтаксиса SHOW ARCHIVED FILES . См. статью "Показать архивированные файлы".
Внимание
При возникновении ошибки Not enough files to satisfy LIMITтаблица не имеет достаточно строк данных в неархивированных файлах, чтобы удовлетворить количество записей, указанных в LIMITфайле. Понизьте LIMIT условие, чтобы найти достаточно неархивированных строк для удовлетворения указанным требованиям LIMIT. См. ограничения.
Включение поддержки архивации
Вы включаете архивную поддержку таблиц Delta Lake, вручную указывая интервал архивирования, настроенный в базовой политике управления жизненным циклом облака.
ALTER TABLE <table_name> SET TBLPROPERTIES(delta.timeUntilArchived = 'X days');
timeUntilArchived Указание временного интервала указывает Azure Databricks игнорировать файлы в таблице Delta Lake, старше указанного времени. Этот параметр отличается от политик жизненного цикла облачной учетной записи. Изменения в одном не влияют на другое. При обновлении политики жизненного цикла в облачной учетной записи необходимо также обновить параметр архивации в таблице Delta Lake. См. раздел "Изменение правила перехода управления жизненного цикла".
При настройке новой политики жизненного цикла в облачной учетной записи может потребоваться до 24 часов, чтобы изменения вступили в силу. См. статью о выполнении политики управления жизненным циклом.
Если этот параметр включен без политик жизненного цикла для облачного хранилища объектов, служба архивации позволяет выполнять запросы успешно, а результаты включают данные из файлов, помеченных для архивации. Смотрите Как Azure Databricks выбирает данные для восстановления?
Предупреждение
Политика жизненного цикла облака не должна архивировать журнал транзакций Delta (_delta_log/ каталог). См. ограничения.
Внимание
Поддержка архивирования полностью основана на совместимых вычислительных средах Azure Databricks и работает только для таблиц Delta Lake. Настройка поддержки архивации не изменяет поведение, совместимость или поддержку в клиентах OSS Delta Lake или Databricks Runtime 12.2 LTS и ниже.
Отображение архивированных файлов
Чтобы определить файлы, которые необходимо восстановить для выполнения данного запроса, используйте SHOW ARCHIVED FILES.
SHOW ARCHIVED FILES FOR table_name [ WHERE predicate ];
Эта операция возвращает имена файлов архивных файлов в виде Spark DataFrame. Восстановите необходимые архивные файлы, следуя инструкциям поставщика хранилища объектов. См. статью "Восстановление архивированных файлов".
Сведения о том, как Azure Databricks выполняет выборку восстановленных данных, см. в разделе «Как Azure Databricks выполняет выборку восстановленных данных?».
Примечание.
Во время этой операции Delta Lake имеет доступ только к статистике данных, содержащейся в журнале транзакций. По умолчанию вот статистика, собранная по первым 32 столбцам таблицы:
- Минимальные значения
- Максимальные значения
- Число значений NULL
- Общее количество записей
Возвращенные файлы включают все архивированные файлы, которые должны быть прочитаны, чтобы определить, существуют ли записи, выполняющие предикат, в файле. Databricks рекомендует предоставлять предикаты, включающие поля, в которых данные секционируются, z-упорядочены или кластеризованы, чтобы уменьшить количество файлов, которые необходимо восстановить.
Восстановление архивированных файлов
Чтобы определить все файлы, требующие восстановления, используйте SHOW ARCHIVED FILES для просмотра списка архивированных файлов.
Используйте API регидратации, чтобы восстановить файлы в оперативный уровень хранения. См. Регидратация BLOB-объектов из уровня архива.
После восстановления файлов в хранилище поставщика облачных служб можно запросить таблицу. Служба архивации автоматически распознает восстановленные файлы. Сведения о том, как Azure Databricks выполняет выборку восстановленных данных, см. в разделе «Как Azure Databricks выполняет выборку восстановленных данных?».
Обновление или удаление архивных данных
Операция завершается ошибкой, если выполнить операцию MERGE, UPDATE или DELETE, которые затрагивают данные в архивных файлах. Для выполнения этих операций необходимо восстановить данные на уровне хранилища, который поддерживает быстрое извлечение. Используется SHOW ARCHIVED FILES для определения файлов, которые необходимо восстановить (см. раздел "Восстановление архивированных файлов").
Как Azure Databricks выполняет выборку для восстановленных данных?
Когда Azure Databricks подготавливает проверку по таблице с включенной поддержкой архивации, она выполняет примеры файлов старше указанного периода хранения, требуемого запросом для определения того, были ли восстановлены файлы. Если результаты указывают, что предполагается, что архивированные файлы уже восстановлены, Azure Databricks считает, что все файлы для запроса восстановлены и процесс запроса продолжается. Результаты включают данные из файлов, помеченных для архивации.
Выборка может не применяться ко всем запросам, см. ограничения.
Ограничения
Архивная поддержка имеет следующие ограничения:
- Поддержка архивации применяется только к файлам данных. Если все файлы в журнале транзакций Delta (
_delta_log/каталог) перемещаются на архивный уровень хранилища, таблица становится полностью недоступной и все запросы к таблице завершаются сбоем. Необходимо настроить политику жизненного цикла облака, чтобы_delta_log/путь не был включен в архивный файл. Примеры конфигураций жизненного цикла S3. - Поддержка политик управления жизненным циклом, которые не основаны на времени создания файла, не существует. Сюда входят политики на основе времени доступа и политики на основе тегов.
- Нельзя использовать
DROP COLUMNв таблице с архивными файлами. -
REORG TABLE APPLY PURGEвыполняет лучшие попытки, но работает только с файлами векторов удаления и ссылающимися на них файлами данных, которые не архивируются.PURGEне удается удалить архивные файлы векторов удаления. - Расширение правила изменения жизненного цикла приводит к неожиданному поведению системы. См. раздел "Расширение правила управления жизненным циклом".
-
LIMITзапросы к таблицам с поддержкой архивации не активируют выборку для восстановленных данных. Если данные таблицы восстановлены, большинство запросов успешно выполняется при запросе восстановленных данных, ноLIMITзапрос возвращает ошибкуDELTA_ARCHIVED_FILES_IN_LIMIT. Смотрите Как Azure Databricks выбирает данные для восстановления?
Изменение правила перехода управления жизненным циклом
При изменении интервала времени для правила перехода управления жизненным циклом облака необходимо обновить свойство delta.timeUntilArchived до того же интервала.
Если интервал времени до архивирования сокращается (меньше времени с момента создания файла), архивная поддержка таблицы Delta Lake продолжает работать нормально после обновления свойства таблицы.
Расширение правила перехода управления жизненным циклом
Если интервал времени перед архивированием увеличивается (чтобы добавить больше времени до его запуска), обновление свойства delta.timeUntilArchived до нового значения может привести к ошибкам. Поставщики облачных служб не автоматически восстанавливают файлы из архивного хранилища при изменении политик хранения данных. Это означает, что файлы, которые ранее имеют право на архивацию, но теперь не считаются допустимыми для архивации, по-прежнему архивируются.
Внимание
Чтобы избежать ошибок, никогда не устанавливайте свойству delta.timeUntilArchived значение, превышающее фактический возраст последних архивированных данных.
Рассмотрим сценарий, в котором интервал времени для архивации изменяется с 60 дней до 90 дней:
- Все записи в диапазоне от 60 до 90 дней архивируются при изменении политики.
- В течение 30 дней новые файлы не архивируются (старые неархивированные файлы 60 дней старше, когда политика расширена).
- Через 30 дней политика жизненного цикла правильно описывает все архивные данные.
Параметр delta.timeUntilArchived отслеживает заданный интервал времени относительно времени создания файла, записанного журналом транзакций Delta. У него нет явных знаний о базовой политике. Во время периода задержки между старым и новым порогом архивирования можно использовать один из следующих подходов, чтобы избежать запросов к архивным файлам:
- Параметр можно оставить
delta.timeUntilArchivedстарым пороговым значением до тех пор, пока не пройдет достаточно времени для архивирования всех файлов.- Следуя приведенному выше примеру, каждый день в течение первых 30 дней объем данных будет считаться архивированным Azure Databricks, но все еще должен быть архивирован поставщиком облачных услуг. Это не приводит к ошибке, но игнорирует некоторые файлы данных, которые могут быть запрошены.
- Через 30 дней обновите значение
delta.timeUntilArchivedна90 days.
- Вы можете обновить параметр
delta.timeUntilArchivedкаждый день, чтобы отразить текущий интервал в течение периода задержки.- Хотя для облачной политики задано значение 90 дней, фактический возраст архивированных данных изменяется в режиме реального времени. Например, по истечении 7 дней установка параметра
delta.timeUntilArchivedна67 daysточно отразит возраст всех архивированных файлов данных. - Этот подход необходим только в том случае, если необходимо получить доступ ко всем данным на горячих уровнях.
- Хотя для облачной политики задано значение 90 дней, фактический возраст архивированных данных изменяется в режиме реального времени. Например, по истечении 7 дней установка параметра
Примечание.
Обновление значения delta.timeUntilArchived не изменяет, какие данные архивируются. Изменяется только то, какие данные Azure Databricks обрабатывает как архивированные.