Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Рекомендации по настройке вручную не применяются к управляемым таблицам каталога Unity, которые используют автоматическую настройку размера файла. Для новых таблиц используйте управляемые таблицы каталога Unity с параметрами по умолчанию.
В Databricks Runtime 13.3 LTS и более поздних версиях Databricks рекомендует использовать кластеризацию для макета таблицы. См. раздел "Использование кластеризации жидкости" для таблиц.
Databricks рекомендует использовать прогнозную оптимизацию для автоматического запуска OPTIMIZE и VACUUM для таблиц. См. прогнозную оптимизацию для управляемых каталогом Unity таблиц.
Автоматическое сжатие и оптимизированные операции записи всегда включены для операций MERGE, UPDATE и DELETE. Вы не можете отключить эту функцию.
Azure Databricks автоматически настраивает размеры файлов для управляемых таблиц каталога Unity. Для внешних таблиц и устаревших рабочих нагрузок можно настроить автоматическое сжатие, оптимизированную запись и целевые размеры файлов для управления записью и сжатием данных.
Для управляемых таблиц каталога Unity Databricks настраивает большинство конфигураций автоматически, если вы используете хранилище SQL или Databricks Runtime 11.3 LTS или более поздней версии.
Если вы обновляете рабочую нагрузку с Databricks Runtime 10.4 LTS или более ранней версии, см. Обновление до фонового автоматического сжатия.
Когда следует запустить OPTIMIZE
Автоматическое сжатие и оптимизированные записи уменьшают проблемы, связанные с небольшими файлами, но не являются полной заменой для OPTIMIZE. Для таблиц размером свыше 1 ТБ Databricks рекомендует запускать OPTIMIZE по расписанию, чтобы дополнительно консолидировать файлы. Databricks рекомендует кластеризацию жидкости для повышения уровня пропуска данных. Если кластеризация жидкости включена, OPTIMIZE автоматически реорганизует данные ключами кластеризации. См. раздел "Использование кластеризации жидкости" для таблиц.
Для управляемых таблиц каталога Unity прогнозная оптимизация автоматически выполняется OPTIMIZE в таблицах с включенной прогнозной оптимизацией.
Автоматическая оптимизация
Автооптимизация описывает параметры autoOptimize.autoCompact и autoOptimize.optimizeWrite. См. статью "Автоматическое сжатие и оптимизированная запись".
Автоматическое сжатие
Автоматическое сжатие объединяет небольшие файлы в разделах таблиц, чтобы уменьшить проблемы с небольшими файлами. Он выполняется синхронно в кластере, который выполняет запись, после успешной записи и только сжимает файлы, которые ранее не были сжаты.
Автоматическая сжатие и прогнозная оптимизация — это независимые функции, которые можно использовать отдельно или совместно. Автоматическое сжатие выполняется на кластере во время записи, в то время как предсказательная оптимизация асинхронно осуществляет техническое обслуживание с помощью бессерверных вычислений.
Используйте следующие параметры для настройки автоматического сжатия:
| Setting | Дельта | Iceberg | Description |
|---|---|---|---|
| Включение автоматического сжатия (свойство таблицы) | autoOptimize.autoCompact |
autoOptimize.autoCompact |
Включает автоматическое сжатие на уровне таблицы. |
| Включение автоматического сжатия (сеанс Spark) | spark.databricks.delta.autoCompact.enabled |
spark.databricks.iceberg.autoCompact.enabled |
Включает автоматическое сжатие на уровне сеанса. |
| Максимальный размер выходного файла | spark.databricks.delta.autoCompact.maxFileSize |
spark.databricks.iceberg.autoCompact.maxFileSize |
Управляет размером целевого выходного файла. |
| Минимальные файлы для активации сжатия | spark.databricks.delta.autoCompact.minNumFiles |
spark.databricks.iceberg.autoCompact.minNumFiles |
Задает минимальное количество небольших файлов, необходимых в секции или таблице для активации автоматического сжатия. |
Эти параметры принимают следующие опции:
| Options | Behavior |
|---|---|
auto (рекомендуется) |
Настраивает целевой размер файла при соблюдении других функций автоматической настройки. |
legacy |
Псевдоним для true. |
true |
Используйте 128 МБ в качестве целевого размера файла. Отсутствует динамическое изменение размера. |
false |
Отключает автоматическое сжатие. Можно задать на уровне сеанса переопределение автоматического сжатия для всех таблиц, измененных в рабочей нагрузке. |
Примечание.
Azure Databricks рекомендует использовать автоматическую настройку для управления размером выходного файла на основе размера таблицы. См. раздел "Размер файла Autotune" на основе размера таблицы.
Чтобы убедиться, что автоматическое сжатие выполняется в таблице, просмотрите журнал таблиц. Автоматическое сжатие отображается как операция OPTIMIZE с полем operationParameters.auto, установленным в значение true. У команды OPTIMIZE, запущенной вручную, параметр auto имеет значение false. См. раздел "Определение типа OPTIMIZE операции".
Оптимизированные записи
Оптимизированные операции записи уменьшают размер файла, поскольку данные записываются и улучшают последующие операции чтения в таблице.
Оптимизированные записи наиболее эффективны для секционированных таблиц, так как они снижают количество небольших файлов, записанных в каждую секцию. Запись меньше больших файлов эффективнее, чем запись нескольких небольших файлов, но вы по-прежнему можете увидеть увеличение задержки записи, так как данные перемешиваются перед записью.
На следующем рисунке показано, как работает оптимизированная запись:
Примечание.
Если вы используете оптимизированные записи, Databricks рекомендует не запускать coalesce(n) или repartition(n) непосредственно перед записью, чтобы контролировать количество записанных файлов.
Оптимизированные записи включены по умолчанию для следующих операций:
MERGE-
UPDATEс вложенными запросами -
DELETEс вложенными запросами
Оптимизированные операции записи также включены для CTAS инструкций и INSERT операций при использовании хранилищ SQL. В Databricks Runtime 13.3 LTS и более поздних версиях все таблицы, зарегистрированные в Unity Catalog, имеют включенную оптимизацию записи для CTAS инструкций и INSERT операций для секционированных таблиц.
Оптимизированные записи можно включить на уровне таблицы или сеанса с помощью следующих параметров:
- Свойство таблицы:
autoOptimize.optimizeWrite - Параметр SparkSession:
spark.databricks.delta.optimizeWrite.enabled(Delta) илиspark.databricks.iceberg.optimizeWrite.enabled(Iceberg)
Эти параметры принимают следующие опции:
| Options | Behavior |
|---|---|
true |
Используйте 128 МБ в качестве целевого размера файла. |
false |
Отключает оптимизированные записи. Можно задать на уровне сеанса, чтобы переопределить оптимизированную запись для всех таблиц, изменяемых этой рабочей нагрузкой. |
Установка целевого размера файла
Чтобы настроить размер файлов в таблице, задайте для свойстваtargetFileSize таблицы нужный размер. При установке все операции оптимизации макета данных пытаются создать файлы указанного размера, включая оптимизацию, кластеризацию жидкости, автоматическое сжатие и оптимизированную запись.
Примечание.
При использовании управляемых таблиц Unity Catalog и хранилищ SQL или Databricks Runtime 11.3 LTS и более поздних версий только команды OPTIMIZE учитывают параметр targetFileSize.
| Недвижимость | Description |
|---|---|
delta.targetFileSize «Delta»iceberg.targetFileSize (Айсберг) |
Тип: размер в байтах или более поздних единицах. Описание: размер целевого файла. Например: 104857600(bytes) или 100mb.Значение по умолчанию: None |
Для существующих таблиц можно задать и отменить свойства с помощью команды SQL ALTER TABLESET свойства TBL. Эти свойства также можно настроить автоматически при создании таблиц с помощью конфигураций сеанса Spark. Дополнительные сведения см. в справочнике по свойствам таблицы .
Автоматически наладить размер файла на основе размера таблицы
Чтобы минимизировать настройку вручную, Azure Databricks автоматически настраивает размер файлов таблиц на основе размера таблицы. Azure Databricks использует файлы меньшего размера для небольших таблиц и файлы большего размера для больших таблиц, чтобы количество файлов в таблице не становилось слишком большим. Azure Databricks не выполняет автонастройку таблиц, которые вы настроили с конкретным целевым размером.
Размер целевого файла основан на текущем размере таблицы. Для таблиц меньше 2,56 ТБ размер автоматически настраиваемого целевого файла составляет 256 МБ. Для таблиц с размером от 2,56 ТБ до 10 ТБ целевой размер увеличивается линейно с 256 МБ до 1 ГБ. Для таблиц размером более 10 ТБ целевой размер файла составляет 1 ГБ.
Примечание.
При росте размера целевого файла для таблицы существующие файлы не оптимизированы повторно в более крупные файлы с помощью команды OPTIMIZE. Поэтому большая таблица может иметь некоторые файлы, которые меньше целевого размера. Если требуется оптимизировать небольшие файлы в более крупные, можно настроить фиксированный целевой размер файла для таблицы с помощью свойства targetFileSize таблицы.
При добавочном написании таблицы целевые размеры и количество файлов будут близки к следующим числам на основе размера таблицы. Количество файлов в этой таблице — только пример. Фактические результаты будут отличаться в зависимости от множества факторов.
| Размер таблицы | Размер целевого файла | Приблизительное количество файлов в таблице |
|---|---|---|
| 10 ГБ | 256 МБ | 40 |
| 1 TБ | 256 МБ | 4096 |
| 2,56 ТБ | 256 МБ | 10240 |
| 3 ТБ | 307 МБ | 12108 |
| 5 ТБ | 512 МБ | 17339 |
| 7 ТБ | 716 МБ | 20784 |
| 10 ТБ | 1 ГБ | 24437 |
| 20 TБ | 1 ГБ | 34437 |
| 50 ТБ | 1 ГБ | 64437 |
| 100 ТБ | 1 ГБ | 114437 |
Ограничение строк, записанных в файле данных
Иногда таблицы с узкими данными могут столкнуться с ошибкой, когда количество строк в заданном файле данных превышает ограничения поддержки формата Parquet. Чтобы избежать этой ошибки, можно использовать конфигурацию сеанса SQL, чтобы указать максимальное количество записей spark.sql.files.maxRecordsPerFile для записи в один файл таблицы. Указание значения нуля или отрицательного значения не представляет предела.
Вы также можете использовать параметр DataFrameWriter maxRecordsPerFile при использовании API DataFrame для записи в таблицу. Если указан параметр maxRecordsPerFile, значение конфигурации spark.sql.files.maxRecordsPerFile для сеанса SQL игнорируется.
Примечание.
Databricks не рекомендует использовать maxRecordsPerFile , если это не необходимо, чтобы избежать ошибки. Этот параметр может потребоваться для некоторых управляемых таблиц каталога Unity с очень узкими данными.
Обновление до автоматического сжатия фона
Фоновое автоматическое уплотнение доступно для управляемых таблиц Unity Catalog. Фоновое автоматическое сжатие не требует прогнозной оптимизации. При миграции устаревшей рабочей нагрузки или таблицы сделайте следующее:
- Удалите конфигурацию
spark.databricks.delta.autoCompact.enabledSpark (Delta) илиspark.databricks.iceberg.autoCompact.enabled(Iceberg) из параметров конфигурации кластера или блокнота. - Для каждой таблицы выполните команду
ALTER TABLE <table_name> UNSET TBLPROPERTIES (delta.autoOptimize.autoCompact)(Delta) илиALTER TABLE <table_name> UNSET TBLPROPERTIES (iceberg.autoOptimize.autoCompact)(Iceberg), чтобы удалить все устаревшие параметры автоматического сжатия.
После удаления этих устаревших конфигураций фоновое автоматическое уплотнение автоматически запускается для всех управляемых таблиц Unity Catalog.