Советы по настройке и применению 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;