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


Использование функций Apache Iceberg версии 3

Это важно

Функции Айсберга версии 3 доступны в общедоступной предварительной версии.

На этой странице описывается использование функций Apache Iceberg версии 3 с каталогом Unity. Айсберг версии 3 повышает производительность запросов и предоставляет новые возможности для управляемых таблиц Delta Lake с помощью UniForm, управляемых таблиц Айсберга и внешних таблиц Iceberg.

Ключевыми функциями Айсберга версии 3 являются:

  • Векторы удаления: Обеспечение эффективного удаления на уровне строк без перезаписи всех файлов данных.
  • Тип данных VARIANT: поддерживает хранение и обработку полуструктурированных данных.
  • История строк: отслеживает инкрементные изменения данных таблицы.

Для всех таблиц Iceberg версии 3 требуется потомственность строк. Команда для включения или отключения версионирования строк отсутствует.

Требования

Чтобы использовать функции Айсберга версии 3, необходимо выполнить следующие требования:

  • Рабочая область с включенным каталогом Unity
  • Databricks Runtime 17.3 или более поздней версии для чтения и записи в управляемые таблицы с использованием Iceberg v3

Создание таблицы с помощью Iceberg версии 3

Создайте новые таблицы с поддержкой Iceberg версии 3 для управляемых таблиц Delta с помощью UniForm и управляемых таблиц Iceberg.

Таблица Delta, управляемая с помощью UniForm

Чтобы создать новую управляемую таблицу Delta с поддержкой UniForm и Iceberg версии 3, используйте следующую команду SQL:

CREATE OR REPLACE TABLE main.schema.table (c1 INT) TBLPROPERTIES(
  'delta.universalFormat.enabledFormats' = 'iceberg',
  'delta.enableIcebergCompatV3' = 'true'
);

Дополнительные сведения о ЮниФорме см. в разделе "Чтение таблиц Delta" с клиентами Iceberg.

Таблица Iceberg с управлением

Чтобы создать новую управляемую таблицу Iceberg с форматом версии 3, используйте следующую команду SQL:

CREATE OR REPLACE TABLE main.schema.table (c1 INT)
USING iceberg
TBLPROPERTIES ('format-version' = 3);

Дополнительные сведения об управляемых таблицах Iceberg см. в разделе Что такое Apache Iceberg в Azure Databricks?.

Обновление существующей таблицы до Iceberg версии 3

Вы можете обновить существующую таблицу до Айсберга версии 3 следующими способами:

  1. Включение любой функции v3 в таблице базы данных.
  2. Установка версии формата Iceberg для таблицы на 3 (как показано ниже).

Предупреждение

Таблицы можно понизить с версии 3 до версии 2 путем восстановления таблицы к версии до обновления до v3 с использованием RESTORE. См. понижение таблицы до предыдущей версии.

Таблица Delta, управляемая с помощью UniForm

Чтобы обновить управляемую таблицу Delta с юниформой до версии 3, используйте следующую команду:

ALTER TABLE catalog.schema.table SET TBLPROPERTIES(
  'delta.enableIcebergCompatV3' = 'true',
  'delta.enableIcebergCompatV2' = 'false'
);

Таблица Iceberg с управлением

Чтобы обновить управляемую таблицу Айсберга до версии 3, используйте следующую команду:

ALTER TABLE catalog.schema.table SET TBLPROPERTIES (
  'format-version' = 3
);

Включение векторов удаления

Векторы удаления оптимизируют операции изменения данных на уровне строк и включены по умолчанию во всех новых таблицах Iceberg версии 3. См. векторы удаления в Databricks.

Замечание

Включение векторов удаления в существующей таблице Айсберга обновляет версию формата Айсберга до 3.

Таблица Delta, управляемая с помощью UniForm

Чтобы создать новую управляемую таблицу Delta с поддержкой UniForm, Iceberg версии 3 и векторами удаления, задайте следующие свойства таблицы:

CREATE TABLE catalog.schema.table (c1 INT) TBLPROPERTIES(
  'delta.enableDeletionVectors' = 'true',
  'delta.enableIcebergCompatV3' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg'
);

Таблица Iceberg с управлением

Чтобы создать управляемую таблицу Iceberg с включенными векторами удаления, задайте iceberg.enableDeletionVectors свойство таблицы:

CREATE TABLE catalog.schema.table (c1 INT)
USING ICEBERG TBLPROPERTIES (
  'iceberg.enableDeletionVectors' = 'true'
);

Использование типа данных VARIANT

Тип данных VARIANT позволяет хранить и запрашивать полуструктурированные данные.

Замечание

Использование VARIANT в существующей таблице Iceberg обновляет версию формата Iceberg до третьей.

Таблица Delta, управляемая с помощью UniForm

Чтобы создать новую управляемую таблицу Delta с юниформой и столбцом VARIANT:

CREATE TABLE catalog.schema.deltaTable (col VARIANT) TBLPROPERTIES(
  'delta.enableIcebergCompatV3' = 'true',
  'delta.universalFormat.enabledFormats' = 'iceberg'
);

Таблица Iceberg с управлением

Чтобы создать новую управляемую таблицу Iceberg с столбцом VARIANT:

CREATE TABLE catalog.schema.icebergTable (col VARIANT) USING iceberg;

Чтобы добавить столбец VARIANT в существующую таблицу, используйте ALTER TABLE команду:

ALTER TABLE catalog.schema.table ADD COLUMN variant_col VARIANT;

Понижение версии таблицы до предыдущей версии Apache Iceberg

Если необходимо вернуть таблицу в состояние, прежде чем она была обновлена до Iceberg версии 3, можно использовать RESTORE команду.

set spark.databricks.delta.restore.protocolDowngradeAllowed = true;
RESTORE TABLE catalog.schema.table TO VERSION AS OF 1;
set spark.databricks.delta.restore.protocolDowngradeAllowed = false;

Ограничения

Azure Databricks поддерживает спецификацию Iceberg версии 3 со следующими исключениями:

  • Значения по умолчанию, включая записи по умолчанию и начальные значения по умолчанию, не поддерживаются.
  • Следующие типы данных не поддерживаются:
    • Геопространственные типы
    • Неизвестный тип
    • Метка времени наносекундной точности.
  • Преобразования с несколькими аргументами не поддерживаются.