Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения: Databricks SQL
Databricks Runtime
Удалите неиспользуемые файлы из каталога таблицы.
Примечание.
Эта команда работает по-разному в зависимости от того, работаете ли вы в таблице Delta или Apache Spark.
Очистите таблицу Delta
Рекурсивно выполняйте очистку каталогов, связанных с таблицей Delta. Полные сведения и ограничения см. в разделе Удаление неиспользуемых файлов данных с помощью команды vacuum.
VACUUM
удаляет все файлы из каталога таблиц, которые не управляются Delta, а также файлы данных, которые больше не находятся в последнем состоянии журнала транзакций для таблицы и старше порога хранения.
VACUUM
пропускает все каталоги, имена которых начинаются с символа подчеркивания (_
), включая каталоги _delta_log
. Секционирование таблицы по столбцу, который начинается с подчеркивания, является исключением из этого правила; VACUUM
сканирует все допустимые разделы, включенные в целевую таблицу Delta. Файлы данных таблицы Delta удаляются в соответствии со временем, когда они были логически удалены из журнала транзакций Delta, плюс время хранения, а не их метками времени изменения в системе хранения. По умолчанию срок хранения составляет 7 дней.
В таблицах Delta Azure Databricks не автоматически запускает операции VACUUM
.
Если вы запускаете VACUUM
в таблице Delta, вы потеряете возможность временного перемещения обратно в версию старше указанного периода хранения данных.
Предупреждение
Рекомендуется установить интервал хранения не менее 7 дней, так как старые моментальные снимки и незафиксированные файлы по-прежнему могут использоваться параллельными средствами чтения или записи в таблицу. Если VACUUM
очищает активные файлы, одновременные операции чтения могут завершиться с ошибкой, или, что еще хуже, таблицы могут быть повреждены, если VACUUM
удаляет файлы, которые еще не были зафиксированы. Необходимо выбрать интервал, который больше, чем самая длинная параллельно выполняющаяся транзакция, и самый длинный период, на который любой поток может отставать от самого последнего обновления в таблице.
В Delta Lake есть механизм проверки безопасности, позволяющий предотвратить выполнение опасной команды VACUUM
. В Databricks Runtime вы уверены, что в этой таблице нет операций, которые занимают больше указанного интервала хранения, вы можете отключить эту проверку безопасности, задав свойство конфигурации Spark spark.databricks.delta.retentionDurationCheck.enabled
на false
.
Синтаксис
VACUUM table_name { { FULL | LITE } | RETAIN num HOURS | DRY RUN } [...]
В Databricks Runtime 16.0 и более ранних RETAIN num HOURS
должен предшествовать DRY RUN
в синтаксисе.
Параметры
-
Определяет существующую таблицу Delta. Имя не должно включать темпоральную спецификацию или спецификацию параметров.
RETAIN num HOURS
Порог удержания. Если указанный период хранения превышается
delta.deletedFileRetentionDuration
, используется период хранения таблицы.DRY RUN
Возвращает список до 1000 файлов, которые нужно удалить.
FULL
илиLITE
применимо:
Databricks SQL
Databricks Runtime 16.1 и более поздних версий
FULL
выполняет вакуумную операцию в полном режиме . Это удаляет файлы данных по истечении срока хранения и все файлы в каталоге таблицы, на которые не ссылается таблица.LITE
выполняет операцию вакуума в режиме Lite. Вместо поиска всех файлов в каталоге таблицVACUUM
использует журнал транзакций Delta для идентификации и удаления файлов, на которые больше не ссылаются версии таблиц в течение срока хранения. ЕслиVACUUM LITE
невозможно завершить, потому что журнал Delta был обрезан, возникает исключение DELTA_CANNOT_VACUUM_LITE.Значение по умолчанию —
FULL
.
Внимание
Окно хранения для команды VACUUM
определяется свойством таблицы delta.deletedFileRetentionDuration
, которое по умолчанию составляет 7 дней.
Это означает, что VACUUM
удаляет файлы данных, на которые больше не ссылается версия таблицы Delta за последние 7 дней.
Чтобы сохранить данные в течение длительного периода, например для поддержки перемещения по времени в течение длительного времени, задайте для этого свойства таблицы более высокое значение.
В следующем примере показано, как задать пороговое значение 30 дней:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.deletedFileRetentionDuration' = '30 days');
Вакуум таблицы, не являющейся Delta
Рекурсивно очищает каталоги, связанные с таблицей, не принадлежащей Delta, и удаляет незафиксированные файлы, старше порога времени хранения. По умолчанию срок хранения составляет 7 дней.
В таблицах, отличных от Delta, Azure Databricks автоматически активирует VACUUM
операции при записи данных.
Синтаксис
VACUUM table_name [RETAIN num HOURS]
Параметры
-
Определяет существующую таблицу по имени или пути.
RETAIN num HOURS
Порог удержания.