Советы по настройке и применению Delta Lake
Оптимизация записи в S3-совместимые хранилища
Если часть данных в рамках задания представлена в форматах, отличных от таблиц Delta Lake, то для оптимизации записи данных в S3-совместимые хранилища настройте коммиттеры S3A.
Если все данные в рамках задания хранятся в таблицах Delta Lake, то настройка коммиттеров S3A не нужна. Delta Lake использует свой алгоритм управления записью в S3-совместимые хранилища, функционально эквивалентный коммиттерам S3A.
Увеличение эффективности работы оператора OPTIMIZE
Оператор OPTIMIZEspark.databricks.delta.optimize.maxThreads, и по умолчанию составляет 10.
Чтобы ускорить выполнение процедуры оптимизации при обработке больших таблиц, увеличьте значение для этого свойства. Вы можете использовать намного большие значения, например 100 или 1000, если ресурсы кластера позволяют запустить такое количество параллельных операций.
Синтаксис для конвертации партиционированных таблиц
Оператор CONVERT TO DELTA преобразует обычные таблицы Spark SQL в формат Delta Lake. Чтобы преобразовать партиционированную таблицу, укажите в запросе колонки партиционирования:
CONVERT TO DELTA table_name PARTITIONED BY (part_col_1 INT, part_col_2 INT);
Принудительная очистка истории изменений таблицы
По умолчанию Delta Lake хранит историю изменений таблицы в течение 30 суток. Этот период определен на уровне таблицы в параметре delta.logRetentionDuration и изменить его можно командой:
ALTER TABLE <схема_и_имя_таблицы> SET TBLPROPERTIES ('delta.logRetentionDuration' = "interval <интервал>")
Подробнее об управлении параметрами таблиц см. в документации Delta Lake
Чтобы принудительно очистить историю изменений таблицы:
-
Реорганизуйте данные в таблице, чтобы повысить эффективность доступа:
OPTIMIZE <имя_таблицы>; -
Разрешите удаление всей истории изменений:
SET spark.databricks.delta.retentionDurationCheck.enabled = false; -
Очистите историю изменений:
VACUUM <имя_таблицы> RETAIN 0 HOURS;