Справочник по свойствам таблицы

Таблицы Delta Lake и Apache Iceberg используют свойства таблицы для настройки поведения и функций, включая макет данных, размер файла, пропуск данных, уровень изоляции и канал изменений данных.

Замечание

Все операции, которые задают или обновляют свойства таблицы, конфликтуют с другими параллельными операциями записи, что приводит к сбою. Databricks рекомендует изменять свойство таблицы только в том случае, если в таблице нет параллельных операций записи.

Изменение свойств таблицы

Чтобы изменить свойства таблицы существующих таблиц, используйте SET TBLPROPERTIES.

Префиксы свойств Delta и Iceberg

Таблицы Delta Lake и Apache Iceberg имеют одинаковые имена свойств таблицы, но требуют различных префиксов:

  • Таблицы Delta Lake: используйте delta. префикс
  • Таблицы Айсберга: используйте iceberg. префикс

Например, чтобы включить векторы удаления в таблице:

Delta Lake

ALTER TABLE <table-name> SET TBLPROPERTIES ('delta.enableDeletionVectors' = true);

Таблица Айсберга

ALTER TABLE <table-name> SET TBLPROPERTIES ('iceberg.enableDeletionVectors' = true);

Свойства и SparkSession свойства таблицы

Каждая таблица имеет собственные свойства таблицы, которые управляют его поведением. Некоторые SparkSession конфигурации всегда переопределяют свойства таблицы. Например, autoCompact.enabled и optimizeWrite.enabled включите автоматическое сжатие и оптимизированную запись на SparkSession уровне. Databricks рекомендует использовать конфигурации, ограниченные таблицами, для большинства нагрузок.

Значения по умолчанию для новых таблиц можно задать с помощью SparkSession конфигураций. Эти значения по умолчанию применяются только к новым таблицам и не влияют на существующие свойства таблицы. SparkSession конфигурации используют другой префикс, отличный от свойств таблицы, как показано в следующей таблице:

Свойство таблицы SparkSessionКонфигурация
delta.<conf>
iceberg.<conf>
spark.databricks.delta.properties.defaults.<conf>
spark.databricks.iceberg.properties.defaults.<conf>

Например, чтобы задать appendOnly = true свойство для всех новых таблиц, созданных в сеансе, задайте следующее:

Delta Lake

SET spark.databricks.delta.properties.defaults.appendOnly = true

Таблица Айсберга

SET spark.databricks.iceberg.properties.defaults.appendOnly = true

Свойства таблицы

Большинство следующих свойств таблицы доступны как для таблиц Delta Lake, так и для таблиц Apache Iceberg, за исключением указанных. delta. Используйте префикс для таблиц Delta Lake и iceberg. префикса для таблиц Айсберга.

Недвижимость Description
autoOptimize.optimizeWrite true для автоматической оптимизации расположения файлов для этой таблицы в процессе записи.
См. оптимизированные операции записи.
Тип данных: Boolean
Значение по умолчанию: (нет)
dataSkippingNumIndexedCols Количество столбцов для сбора статистики о пропусках данных. Значение -1 обозначает сбор статистики для всех столбцов.
См. пропуск данных.
Тип данных: Int
По умолчанию: 32
dataSkippingStatsColumns Список имён столбцов, разделённых запятыми, для сбора статистики и повышения эффективности функции пропуска данных. Это свойство имеет приоритет над dataSkippingNumIndexedCols.
См. пропуск данных.
Тип данных: String
Значение по умолчанию: (нет)
deletedFileRetentionDuration Кратчайшее время для хранения логически удаленных файлов данных перед их физическим удалением. Это предотвращает сбои в устаревших модулях чтения после сжатия или перезаписи секций.
Databricks рекомендует значение по умолчанию в 7 дней или выше. Если срок хранения слишком короткий, незафиксированные файлы длительных заданий могут быть удалены до их завершения.
См. Настройка сохранения данных для запросов по временному перемещению.
Тип данных: CalendarInterval
По умолчанию: interval 1 week
enableDeletionVectors true для включения векторов удаления и прогнозируемой операции ввода-вывода при обновлениях.
См. векторы удаления в Databricks и включение векторов удаления.
Тип данных: Boolean
По умолчанию: зависит от параметров администратора рабочей области и версии среды выполнения Databricks. См. автоактивацию векторов удаления.
logRetentionDuration Как долго хранить историю для таблицы. VACUUM операции переопределяют это пороговое значение хранения.
Databricks автоматически очищает записи журнала старше интервала хранения при каждой записи контрольной точки. Установка этого свойства на большое значение сохраняет множество записей журнала. Это не влияет на производительность, так как операции с журналом имеют постоянное время выполнения. Операции с журналом параллельны, но становятся более дорогими по мере увеличения размера журнала.
См. Настройка сохранения данных для запросов по временному перемещению.
Тип данных: CalendarInterval
По умолчанию: interval 30 days
minReaderVersion (только Delta Lake) Минимальная требуемая версия средства чтения протокола для чтения из этой таблицы.
Databricks не рекомендует вручную настраивать это свойство.
См. сведения о совместимости функций Delta Lake и протоколах.
Тип данных: Int
По умолчанию: 1
minWriterVersion (только Delta Lake) Минимальная требуемая версия протоколирования для записи в эту таблицу.
Databricks не рекомендует вручную настраивать это свойство.
См. сведения о совместимости функций Delta Lake и протоколах.
Тип данных: Int
По умолчанию: 2
format-version (Только управляемые таблицы Apache Iceberg) Версия формата таблицы Айсберга.
Databricks не рекомендует вручную настраивать это свойство.
Ознакомьтесь с функциями Apache Iceberg версии 3.
Тип данных: Int
По умолчанию: 2
randomizeFilePrefixes true для создания случайного префикса для пути к файлу вместо сведений о секциях.
Тип данных: Boolean
По умолчанию: false
targetFileSize Целевой размер файла в байтах или более высоких единицах для настройки файла. Например: 104857600(bytes) или 100mb.
См. раздел "Управление размером файла данных".
Тип данных: String
Значение по умолчанию: (нет)
parquet.compression.codec Кодек сжатия для таблицы.
Допустимые значения: ZSTD, , SNAPPYGZIPLZ4, BROTLI (поддержка зависит от формата)
Это свойство гарантирует, что все будущие записи в таблицу будут использовать выбранный кодек, переопределяя значения по умолчанию для кластера или сеанса (spark.sql.parquet.compression.codec). Однако единовременные настройки DataFrame .write.option("compression", "...") по-прежнему имеют приоритет. Доступно в Databricks Runtime 16.0 и более поздних версий. Обратите внимание, что существующие файлы не перезаписываются автоматически. Для повторного сжатия существующих данных с выбранным форматом используйте OPTIMIZE table_name FULL.
Тип данных: String
По умолчанию: ZSTD
parquet.format.version (только Delta Lake) Версия формата Parquet, используемая при записи файлов данных. При этом 2.12.0 можно включить расширенные кодировки, заголовки страниц данных версии 2 и INT64 метки времени, которые могут повысить производительность запросов и сократить объем хранилища.
Допустимые значения: 1.0.0 и 2.12.0которые соответствуют выпускам из формата Apache Parquet.
Это свойство можно задать в таблицах Delta Lake и Apache Iceberg. Некоторые читатели OSS Iceberg могут не поддерживать кодировки Parquet версии 2. См. Ограничения.
См. раздел Parquet версии 2.
Тип данных: String
По умолчанию: 1.0.0
appendOnly true для превращения таблицы в доступную только для добавления. Таблицы только для добавления не позволяют удалять существующие записи или обновлять существующие значения.
Тип данных: Boolean
По умолчанию: false
autoOptimize.autoCompact Автоматически объединяет небольшие файлы в разделах таблиц, чтобы уменьшить проблемы с небольшими файлами. auto (рекомендуется), принимает true, legacy, или false.
См. раздел "Автоматическое сжатие".
Тип данных: String
Значение по умолчанию: (нет)
checkpoint.writeStatsAsJson true для записи статистики файлов в контрольных точках в формате JSON для столбца stats .
Тип данных: Boolean
По умолчанию: false
checkpoint.writeStatsAsStruct true для записи статистики файла в контрольные точки в формате структуры для столбца stats_parsed, а также для записи значений разделов в формате структуры для partitionValues_parsed.
Тип данных: Boolean
По умолчанию: true
checkpointPolicy classic для классических контрольных точек. v2 для контрольных точек v2.
См. раздел "Контрольная точка версии 2 " и "Совместимость" для таблиц с отказоустойчивой кластеризации.
Тип данных: String
По умолчанию: classic
columnMapping.mode Позволяет сопоставлять столбцы таблицы и соответствующие столбцы Parquet, которые имеют разные имена. Допустимые значения: none, name и id.
См. как переименовывать и удалять столбцы с использованием сопоставления столбцов в Delta Lake.
Примечание: Включение columnMapping.mode автоматически включает randomizeFilePrefixes.
Тип данных: DeltaColumnMappingMode
По умолчанию: none
compatibility.symlinkFormatManifest.enabled (только Delta Lake) true чтобы настроить таблицу Delta Lake, чтобы все операции записи в таблице автоматически обновляли манифесты.
Тип данных: Boolean
По умолчанию: false
enableChangeDataFeed true для включения потока данных изменений.
См. раздел "Использование веб-канала изменений".
Тип данных: Boolean
По умолчанию: false
enableTypeWidening true для включения расширения типов.
См. Расширение типов.
Тип данных: Boolean
По умолчанию: false
isolationLevel Степень изоляции транзакции от модификаций, внесенных параллельными транзакциями.
Допустимые значения — Serializable и WriteSerializable.
См. уровни изоляции (WriteSerializable и Serializable).
Тип данных: String
По умолчанию: WriteSerializable
randomPrefixLength Число символов, которые генерируются для случайных префиксов, когда randomizeFilePrefixes является true.
Тип данных: Int
По умолчанию: 2
setTransactionRetentionDuration Кратчайшее время, в течение которого новые снимки сохраняют идентификаторы транзакций (например, SetTransactions). Срок действия новых моментальных снимков истекает, и они игнорируют идентификаторы транзакций, старше или равные длительности, указанной этим свойством. Идентификатор SetTransaction используется для обеспечения идемпотентности операций записи. Дополнительные сведения см. в разделе "Использование foreachBatch идемпотентной таблицы ".
Тип данных: CalendarInterval
Значение по умолчанию: (нет)