Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Файлы соответствующего размера важны для производительности запросов, использования ресурсов и управления метаданными. Небольшие файлы увеличивают необходимость обработки задач и операций с метаданными, в то время как большие файлы могут приводить к недостаточному использованию параллелизма и искажать операции ввода-вывода. Delta Lake использует метаданные файлов для отсечения разделов и пропуска неактуальных данных, поэтому определение оптимального размера файла обеспечивает эффективное чтение, запись и обслуживание.
Рекомендации по размеру файлов для различных сценариев использования (SQL Analytics Endpoint, Power BI Direct Lake, Spark) вы можете найти в разделе Cross-workload table maintenance and optimization.
В следующих разделах описаны основные функции, которые можно использовать для настройки размера файла в таблицах Delta.
Настраиваемые операции с форматом данных
Optimize
Команда OPTIMIZE перезаписывает небольшие файлы в виде больших файлов, чтобы улучшить макет данных в таблицах Delta. Дополнительные сведения о настройке размера файла см. в документации по команде OPTIMIZE .
Автоматическое сжатие
Автоматическое сжатие автоматически оценивает работоспособности секций после каждой операции записи. При обнаружении чрезмерной фрагментации файлов (слишком большого количества небольших файлов) в секции он запускает синхронную OPTIMIZE операцию сразу после фиксации записи. Этот подход, управляемый записью, к обслуживанию файлов обычно является оптимальным, так как сжатие выполняется только тогда, когда это программно определяется как полезное. Подробные параметры конфигурации и дополнительные сведения см. в документации по автоматическому сжатие .
Оптимизация записи
Оптимизация записи снижает затраты на небольшие файлы, выполняя предварительное сжатие (компактная упаковка), что приводит к уменьшению количества файлов и их увеличению. Этот подход перемещает данные в памяти в оптимальноразмерные контейнеры до того, как Spark записывает файлы Parquet, максимизируя потенциал для создания файлов соответствующего размера без необходимости в немедленной очистке после записи.
Используйте оптимизацию записи выборочно. Перемешивание может добавить ненужное время обработки в некоторых сценариях записи. Оптимизация записи наиболее полезна, если записи в противном случае создают множество небольших файлов, которые позже требуют сжатия.
Оптимизация записи обычно полезна для:
- Секционированные таблицы
- Таблицы с частыми небольшими вставками
- Операции, которые, скорее всего, касаются многих файлов (
MERGE,UPDATEиDELETE)
Для выборочного приложения в определенных таблицах отмените конфигурацию сеанса и включите свойство таблицы по отдельности. Это позволяет каждой таблице определять применение оптимизации записи.
Сброс оптимизации записи
spark.conf.unset("spark.databricks.delta.optimizeWrite.enabled")Включение на отдельной таблице
ALTER TABLE dbo.table_name SET TBLPROPERTIES ('delta.autoOptimize.optimizeWrite' = 'true')
Чтобы включить оптимизацию записи для записи во все секционированные таблицы в сеансе Spark, убедитесь, что конфигурация сеанса не настроена, а затем задайте spark.microsoft.delta.optimizeWrite.partitioned.enabled:
Размер целевого файла, сгенерированного с помощью оптимизации записи, можно настроить с помощью spark.databricks.delta.optimizeWrite.binSize конфигурации.
Замечание
Ознакомьтесь с профилями ресурсов, чтобы увидеть параметры записи, оптимизированные по умолчанию для каждого профиля ресурса.
Согласованное определение размера целевого файла
Чтобы избежать настройки отдельных конфигураций сеансов минимального и максимального размера файла для оптимизации, автоматического сжатия и оптимизации записи, используйте delta.targetFileSize свойство таблицы. Это свойство объединяет поведение размера файла на уровне таблицы. Укажите значение в виде строки байтов (например, 1073741824b, 1048576k, 1024m, 1g). При установке он имеет приоритет над конфигурациями сеансов и адаптивным размером целевого файла.
ALTER TABLE dbo.table_name
SET TBLPROPERTIES ('delta.targetFileSize' = '256m')
Адаптивный размер целевого файла
Microsoft Fabric предоставляет адаптивный размер целевого файла, чтобы устранить сложность, связанную с ручной настройкой размера целевого файла всех таблиц в сеансе или отдельных таблицах с помощью свойства таблицы delta.targetFileSize. Адаптивный размер целевого файла использует эвристики разностных таблиц, например размер таблицы, чтобы оценить идеальный размер целевого файла и автоматически обновлять целевой объект по мере изменения условий, обеспечивая оптимальную производительность без ручного вмешательства или расходов на обслуживание.
Включение размера адаптивного целевого файла
Замечание
Хотя в настоящее время не включена по умолчанию, корпорация Майкрософт рекомендует включить конфигурацию сеанса адаптивного целевого размера файла .
Включите размер адаптивного целевого файла в таблицах, созданных или измененных в сеансе Spark, задав следующую конфигурацию сеанса Spark:
Понимание поведения оценки
При включении размер адаптивного целевого файла вычисляется и устанавливается в следующих сценариях:
-
CREATE TABLE AS SELECTиCREATE OR REPLACE TABLE AS SELECTоперации - Перезапись записей (например,
DataFrame.write.mode("overwrite")илиINSERT OVERWRITE) - Записывает в режиме
ErrorIfExists,AppendилиIgnoreпри создании новой таблицы - В начале
OPTIMIZEкоманды
После установки идеальный размер продолжает повторно оцениваться в начале каждой OPTIMIZE операции, чтобы гарантировать, что текущие эвристики отражают последнее распределение данных и рост таблиц. Этот адаптивный подход автоматически обновляет целевой размер файла с течением времени, удаляя необходимость ручной настройки при сохранении запросов и производительности записи по мере роста данных. Если требуется заблокировать определенный размер, например, в сценариях гипер-тюнинга или тестирования, можно переопределить адаптивную настройку, явно задав свойство таблицы, определяемое пользователем delta.targetFileSize.
Настройка границ размера адаптивного целевого файла
Размер адаптивного целевого файла можно дополнительно настроить с помощью следующих конфигураций сеанса Spark:
| Недвижимость | Description | Значение по умолчанию | Конфигурация сеанса |
|---|---|---|---|
| minFileSize | Указывает минимальный размер файла (нижняя граница) в виде строки байтов, которую адаптивный целевой размер файла используется при вычислении. Должно быть от 128 МБ до 1 ГБ. | 128 м | spark.microsoft.delta.targetFileSize.adaptive.minFileSize |
| maxFileSize | Указывает максимальный размер файла (верхняя граница) в виде строки байтов, которую адаптивный размер целевого файла используется при вычислении. Должно быть от 128 МБ до 1 ГБ. | 1024m | spark.microsoft.delta.targetFileSize.adaptive.maxFileSize |
| stopAtMaxSize | Когда true прекращает дальнейшие вычисления размера после достижения вычисленного целевого размера maxFileSize, это снижает нагрузку на оценку на очень больших таблицах. |
true | spark.microsoft.delta.targetFileSize.adaptive.stopAtMaxSize |
Замечание
С stopAtMaxSize включенным (по умолчанию) адаптивный целевой размер остается фиксированным по максимальному значению после достижения, избегая дополнительных вычислений. Если ваши таблицы могут уменьшиться после увеличения, установите это свойство на false, чтобы разрешить пересчет ниже максимального порога.
Проверьте вычисляемый целевой размер
Вы можете выполнить аудит вычисляемого размера адаптивного целевого файла, проверяя сведения о таблице и свойства из DESCRIBE DETAIL или DESCRIBE EXTENDED. Вычисляемое значение записывается как строка байтов в свойстве delta.targetFileSize.adaptive таблицы.
Это значение используется в качестве целевого (или максимального) размера для оптимизации, автоматического сжатия и оптимизации записи. Связанное минимальное значение вычисляется как половина delta.targetFileSize.adaptive.
Общие сведения о влиянии на производительность
На графике ниже показана связь между размером таблицы и оптимальным размером файла «parquet». Для таблиц ниже 10 ГБ среда выполнения Fabric Spark оценивает целевой размер файла размером 128 МБ. По мере увеличения размера таблицы целевой размер файла масштабируется линейно, достигая до 1 ГБ для таблиц, превышающих 10 ТБ.
Начиная с малого объема в 128 МБ и затем увеличивая размер файлов Parquet по мере роста таблицы, можно добиться каскадных преимуществ.
Улучшено пропускание файлов Delta: Правильный размер файла поддерживает оптимальную кластеризацию данных и пропуск, позволяя протоколу пропуска файлов Delta обходить больше неуместных файлов во время выполнения запроса. Небольшая таблица с файлами размером 128 МБ вместо 1 ГБ позволяет увеличить возможность пропуска файлов в 8 раз.
Сокращение затрат на обновление:
MERGEиUPDATEоперации перезаписывают только затронутые файлы. Файлы соответствующего размера минимизируют количество затрагиваемых файлов при каждой операции, снижая объем перезаписываемых данных. Если векторы удаления включены, правильный размер файлов становится критически важным: гробовые камни на уровне строк в слишком крупных файлах приводят к значительным затратам на очистку данных во время операций сжатия или очистки.Оптимизированный параллелизм: файлы с оптимальным размером позволяют Spark достичь идеального параллелизма задач. Слишком много небольших файлов перегружают планировщик; слишком мало больших файлов недоиспользуют пул Spark. Оптимальный размер максимизирует пропускную способность как чтения, так и записи.
Адаптивный размер целевого файла может повысить производительность сжатия и задержку запросов и записи при выборе лучшего размера, чем конфигурация по умолчанию. Если адаптивная оценка создает тот же размер, что и конфигурация сеанса Spark по умолчанию, не ожидается измеримое улучшение.
Это важно
Увеличение размера записи происходит, когда ранее сжатые файлы перезаписываются по мере увеличения размера целевого файла с течением времени. Чтобы уменьшить этот риск, включите целевые объекты сжатия на уровне файлов (spark.microsoft.delta.optimize.fileLevelTarget.enabled=true). Этот параметр помогает сохранить предыдущую работу сжатия, пропуская ненужное повторное сжатие файлов, которые уже были сжаты до более ранних целевых размеров. Дополнительные сведения см. в разделе целевых объектов сжатия на уровне файлов.
Сводка рекомендаций
Используйте эти рекомендации, чтобы сбалансировать затраты на запись, производительность чтения и затраты на обслуживание по мере роста таблиц.
- Включить автоматическую компактацию для приема конвейеров с частыми небольшими записями (поточной или микропакетной обработке), чтобы работоспособность файлов сохранялась без ручного планирования.
- Используйте автоматическое сжатие выборочно для других шаблонов записи , когда цели уровня обслуживания могут допускать случайные пики задержки записи.
- Включите адаптивное задание целевого размера файла, чтобы уменьшить необходимость ручной настройки и поддерживать соответствие размеров с ростом таблицы.
- Используйте оптимизацию записи в управляемых путях приема (пакетные задания, которые могут допускать перетасовку, секционированные записи или частые небольшие записи), чтобы уменьшить давление нижнего сжатия.
-
Запланируйте перепись всей таблицы
OPTIMIZEв период низкой активности, когда необходимо перезаписать множество разделов или применить Z-Order. -
Включите быструю оптимизацию, чтобы уменьшить усиление записи и сделать
OPTIMIZEболее идемпотентным. См. быструю оптимизацию. -
Последовательно используйте
delta.targetFileSizeили адаптивный размер целевого файла, чтобы оптимизировать, автосжатие и оптимизировать запись согласуются с совместимыми целями по размеру файлов. - Включите целевые объекты сжатия на уровне файлов , чтобы уменьшить ненужный перекомпактирование по мере увеличения размера целевых файлов с течением времени.