#databricks #azure-databricks #delta-lake
#databricks #azure-databricks #delta-lake
Вопрос:
У меня была небольшая путаница в журнале транзакций Дельта-лейк. В документации упоминается, что по умолчанию политика хранения составляет 30 дней и может быть изменена с помощью свойства -: delta.logRetentionDuration=interval-string
. Но я не понимаю, когда фактические файлы журнала удаляются из папки delta_log. Это когда мы выполняем какую-то операцию? Или может быть операция ВАКУУМИРОВАНИЯ. Однако упоминается, что операция ВАКУУМИРОВАНИЯ удаляет только файлы данных, а не журналы. Но будет ли это удалять журналы старше указанного срока хранения журнала?
ссылка -: https://docs.databricks.com/delta/delta-batch.html#data-retention
Комментарии:
1. Просто чтобы добавить к этому, как мы можем установить сохранение данных транзакций Delta log навсегда?
Ответ №1:
Концепция хранения данных заключается в создании политик, гарантирующих автоматическое удаление данных, которые не могут быть сохранены, как часть процесса. По умолчанию DeltaLake хранит историю регистрации изменений всех изменений данных. Существует два параметра delta.logRetentionDuration
(интервал по умолчанию 30 дней) и delta.deletedFileRetentionDuration
(интервал по умолчанию 1 неделя).
Delta_log — это реализация журнала транзакций по умолчанию в Databricks Delta Lake. Он сохраняет историю фиксации транзакций таблицы за период по умолчанию в 30 дней. Однако, если вы довольно часто загружаете данные в таблицы delta lake, вы можете увидеть очень много крошечных файлов json и crc, созданных в вашей учетной записи хранения в каталоге _delta_log. Это может потенциально увеличить ваши расходы на хранение, если вы не заинтересованы в сохранении истории журналов в течение 30 дней.
Если вы администрируете и управляете своей средой databricks, вам следует подумать об усечении этих файлов журнала. Способ сделать это по умолчанию в databricks delta lake — запустить оператор ALTER TABLE.. TBLPROPERTIES для каждой таблицы, и это может показаться громоздким для администрирования.
%sql
ALTER table_name SET TBLPROPERTIES ('delta.logRetentionDuration'='interval 240 hours', 'delta.deletedFileRetentionDuration'='interval 1 hours')
SHOW TBLPROPERTIES table_name
Комментарии:
1. Спасибо за ответ @CHEEKATLAPRADEEP-MSFT, однако, если компания требует, чтобы мы сохраняли эти журналы навсегда, то могли бы предложить что-нибудь в этом отношении?
2. Используйте функцию глубокого клонирования, если вам нужно сохранить данные навсегда
3. @CHEEKATLAPRADEEP-MSFT Я бы обязательно отметил ваш ответ. Тем не менее, я просто хотел узнать, когда в Azure Databricks запускается действие delete delta_log. Происходит ли это во время вакуумной операции?
4. @AnishSarangi. Нет, VACUUM работает только с файлами данных. _delta_log удаляются в реальном времени, каждый раз при создании нового
checkpoint
, старые (в зависимости от времени log_retention) удаляются. См.: docs.databricks.com/delta/delta-batch.html#deltatimetravel