Поделиться через


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

Delta Lake резервирует свойства таблицы Delta, начиная с delta.. Эти свойства могут иметь определенные значения и влиять на поведение при задании этих свойств.

Примечание.

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

Как взаимодействуют свойства таблицы и свойства SparkSession?

Свойства Delta-таблицы задаются для каждой таблицы. Если свойство задано в таблице, то оно используется по умолчанию.

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

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

Конфигурация Delta Lake Конфигурация SparkSession
delta.<conf> spark.databricks.delta.properties.defaults.<conf>

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

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

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

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

Доступные свойства таблицы Delta включают следующие:

Свойство
delta.appendOnly
true для этой таблицы Delta, доступной только для добавления. Если доступно только добавление, существующие записи не могут быть удалены и существующие значения не могут быть обновлены.
См. справочник по свойствам таблицы Delta.
Тип данных: Boolean
По умолчанию: false
delta.autoOptimize.autoCompact
auto для автоматической оптимизации макета файлов в Delta Lake для этой таблицы Delta.
См. раздел "Автоматическое сжатие" для Delta Lake в Azure Databricks.
Тип данных: Boolean
Значение по умолчанию: (нет)
delta.autoOptimize.optimizeWrite
true для автоматической оптимизации структуры файлов этой таблицы Delta Lake во время записи данных.
См. раздел Оптимизированные записи для Delta Lake в Azure Databricks.
Тип данных: Boolean
Значение по умолчанию: (нет)
delta.checkpoint.writeStatsAsJson
true для Delta Lake для записи статистики файла в контрольных точках в формате JSON для столбца stats.
См. статью "Управление статистикой на уровне столбцов" в контрольных точках.
Тип данных: Boolean
По умолчанию: true
delta.checkpoint.writeStatsAsStruct
true Delta Lake для записи статистики файла в чекпоинты в формате структуры для столбца stats_parsed и записи значений секций в виде структуры partitionValues_parsed.
См. статью "Управление статистикой на уровне столбцов" в контрольных точках.
Тип данных: Boolean
Значение по умолчанию: (нет)
delta.checkpointPolicy
classic для классических контрольных точек Delta Lake. v2 для контрольных точек версии 2.
См. Совместимость для таблиц с жидкой кластеризацией.
Тип данных: String
По умолчанию: classic
delta.columnMapping.mode
Включено ли сопоставление столбцов для столбцов таблицы Delta и соответствующих столбцов Parquet, использующих разные имена.
См. как переименовывать и удалять столбцы с использованием сопоставления столбцов в Delta Lake.
Примечание. Включение delta.columnMapping.mode автоматически включает
delta.randomizeFilePrefixes.
Тип данных: DeltaColumnMappingMode
По умолчанию: none
delta.dataSkippingNumIndexedCols
Количество столбцов для Delta Lake для сбора статистики о пропуске данных. Значение -1 обозначает сбор статистики для всех столбцов.
См. Пропуск данных для Delta Lake.
Тип данных: Int
По умолчанию: 32
delta.dataSkippingStatsColumns
Список имен столбцов, разделенных запятыми, на которых Delta Lake собирает статистику для улучшения функциональности пропуска данных. Это свойство имеет приоритет над delta.dataSkippingNumIndexedCols.
См. Пропуск данных для Delta Lake.
Тип данных: String
Значение по умолчанию: (нет)
delta.deletedFileRetentionDuration
Кратчайшее время, в течение которого Delta Lake сохраняет логически удаленные файлы данных перед их физическим удалением. Это делается для предотвращения сбоев в устаревших модулях чтения после операций сжатия или перезаписи разделов.
Это значение должно быть достаточно большим, чтобы убедиться, что:
  • Это больше, чем максимально возможная длительность задания, если вы выполняете команду VACUUM при наличии одновременных читающих или записывающих процессов, обращающихся к таблице Delta.
  • При выполнении потокового запроса, который считывается из таблицы, этот запрос не останавливается дольше, чем это значение. В противном случае запрос может не перезапуститься, так как он должен по-прежнему считывать старые файлы.

См. Настройка хранения данных для запросов временного путешествия.
Тип данных: CalendarInterval
По умолчанию: interval 1 week
delta.enableChangeDataFeed
true для включения потока данных изменений.
См. Включение канала передачи данных об изменениях.
Тип данных: Boolean
По умолчанию: false
delta.enableDeletionVectors
true для включения векторов удаления и прогнозируемой операции ввода-вывода при обновлениях.
См. раздел " Что такое векторы удаления?".
Тип данных: Boolean
По умолчанию: зависит от параметров администратора рабочей области и версии среды выполнения Databricks. См. векторы автоматического включения удаления
delta.isolationLevel
Степень изоляции транзакции от модификаций, внесенных параллельными транзакциями.
Допустимые значения — Serializable и WriteSerializable.
Смотрите уровни изоляции и конфликты записи в Azure Databricks.
Тип данных: String
По умолчанию: WriteSerializable
delta.logRetentionDuration
Как долго хранится история для таблицы Delta. VACUUM операции переопределяют это пороговое значение хранения.
Каждый раз при записи контрольной точки Delta Lake автоматически очищает записи журнала, которые созданы до начала интервала хранения. Если для этого свойства задано достаточно большое значение, сохраняется большое число записей журнала. Это не должно повлиять на производительность, так как операции с журналом выполняются за константное время. Операции с историей выполняются параллельно, но при увеличении ее размера затраты возрастают.
Сведения о настройке хранения данных для запросов на поездки по времени.
Тип данных: CalendarInterval
По умолчанию: interval 30 days
delta.minReaderVersion
Минимальная требуемая версия протокольного считывателя для устройства, которое позволяет читать из этой таблицы Delta.
Databricks не рекомендует вручную настраивать это свойство.
См. статью Как Azure Databricks управляет совместимостью функций Delta Lake?.
Тип данных: Int
По умолчанию: 1
delta.minWriterVersion
Минимальная требуемая версия протокола для средства записи, которое позволяет выполнять запись в эту таблицу Delta.
Databricks рекомендует не настраивать вручную это свойство.
См. статью Как Azure Databricks управляет совместимостью функций Delta Lake?.
Тип данных: Int
По умолчанию: 2
delta.randomizeFilePrefixes
true для Delta Lake для создания случайного префикса для пути к файлу вместо сведений о секции.
Тип данных: Boolean
По умолчанию: false
delta.randomPrefixLength
Если для delta.randomizeFilePrefixes задано значение true, определяется количество символов, которое Delta Lake создаёт для случайных префиксов.
Тип данных: Int
По умолчанию: 2
delta.setTransactionRetentionDuration
Наименьший период времени, в течение которого новые моментальные снимки будут сохранять идентификаторы операций (например, SetTransaction). Когда новый моментальный снимок видит идентификатор транзакции, срок действия которого равен или превышает длительность, указанную в этом свойстве, моментальный снимок считает, что срок действия истек и игнорирует транзакцию. Идентификатор SetTransaction используется для обеспечения идемпотентности операций записи. Дополнительные сведения см. в идемпотентных записях таблицы foreachBatch.
Тип данных: CalendarInterval
Значение по умолчанию: (нет)
delta.targetFileSize
Целевой размер файла в байтах или более высоких единицах для настройки файла. Например,
104857600 (байты) или 100mb.
См. раздел Configure Delta Lake для управления размером файлов данных.
Тип данных: String
Значение по умолчанию: (нет)
delta.tuneFileSizesForRewrites
true, чтобы всегда использовать файлы меньшего размера для всех операций оптимизации макета данных в таблице Delta.
false, чтобы никогда не переходить на более низкие размеры файлов, т. е. предотвратить активацию автоматического определения.
См. Настройте Delta Lake для контроля размера файлов данных.
Тип данных: Boolean
Значение по умолчанию: (нет)