Добавочно клонировать таблицы Parquet и Iceberg в Delta Lake

Вы можете использовать функцию клонирования Azure Databricks для добавочного преобразования данных из источников данных Parquet или Iceberg в управляемые или внешние таблицы Delta.

Клон Azure Databricks для Parquet и Iceberg объединяет функции, используемые для клонирования таблиц Delta и преобразования таблиц в Delta Lake. В этой статье описываются варианты использования и ограничения для этой функции и приведены примеры.

Внимание

Эта функция предоставляется в режиме общедоступной предварительной версии.

Примечание.

Для этой функции требуется Databricks Runtime 11.3 или более поздней версии.

Когда следует использовать клон для добавочного приема данных Parquet или Iceberg

Azure Databricks предоставляет ряд вариантов приема данных в lakehouse. Databricks рекомендует использовать клон для приема данных Parquet или Iceberg в следующих ситуациях:

Примечание.

Исходная таблица означает клонированные файлы таблиц и данных, а целевая таблица ссылается на таблицу Delta, созданную или обновленную операцией.

  • Вы выполняете миграцию из Parquet или Iceberg в Delta Lake, но необходимо продолжать использовать исходные таблицы.
  • Необходимо поддерживать синхронизацию только приема между целевой таблицей и рабочей исходной таблицей, которая получает добавления, обновления и удаления.
  • Вы хотите создать моментальный снимок, совместимый с ACID, исходных данных для создания отчетов, машинного обучения или пакетного ETL.

Какой синтаксис для клона?

Клонирование для Parquet и Iceberg использует тот же базовый синтаксис, используемый для клонирования таблиц Delta, с поддержкой мелких и глубоких клонов. Дополнительные сведения см. в разделе "Клонирование типов".

Databricks рекомендует использовать клонирование постепенно для большинства рабочих нагрузок. Поддержка клонирования Parquet и Iceberg использует синтаксис SQL.

Примечание.

Клонирование для Parquet и Iceberg имеет разные требования и гарантии, чем клонирование или преобразование в Delta. См . сведения о требованиях и ограничениях для клонирования таблиц Parquet и Iceberg.

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

CREATE OR REPLACE TABLE <target-table-name> CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> CLONE iceberg.`/path/to/data`;

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

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE parquet.`/path/to/data`;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE iceberg.`/path/to/data`;

Вы также можете создавать глубокие или мелкие клоны для таблиц Parquet, зарегистрированных в хранилище метаданных, как показано в следующих примерах:

CREATE OR REPLACE TABLE <target-table-name> CLONE <source-table-name>;

CREATE OR REPLACE TABLE <target-table-name> SHALLOW CLONE <source-table-name>;

Требования и ограничения для клонирования таблиц Parquet и Iceberg

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

Следующие дополнительные ограничения применяются при использовании клонирования с таблицами Parquet и Iceberg:

  • Необходимо зарегистрировать таблицы Parquet с секциями в каталоге, например хранилище метаданных Hive перед клонированием и использованием имени таблицы для idenfity исходной таблицы. Нельзя использовать синтаксис клонирования на основе пути для таблиц Parquet с секциями.
  • Вы не можете клонировать таблицы Айсберга, которые испытали эволюцию секций.
  • Не удается клонировать таблицы с слиянием в режиме слияния, которые имеют опыт обновления, удаления или слияния.
  • Ниже приведены ограничения для клонирования таблиц Айсберга с секциями, определенными для усеченных столбцов:
    • В Databricks Runtime 12.2 LTS и ниже поддерживается stringтолько усеченный тип столбца.
    • В Databricks Runtime 13.3 LTS и более поздних версиях можно работать с усеченными столбцами типов stringилиlongint.
    • Azure Databricks не поддерживает работу с усеченными столбцами типа decimal.
  • Добавочный клон синхронизирует изменения схемы и свойства из исходной таблицы, все изменения схемы и файлы данных, записанные локально в клонированную таблицу, переопределяются.
  • Каталог Unity не поддерживает неглубокие клоны.
  • При определении пути нельзя использовать шаблоны глобов.

Примечание.

В Databricks Runtime 11.3 эта операция не собирает статистику на уровне файла. Таким образом, целевые таблицы не получают преимущества от пропуска данных Delta Lake. Статистика уровня файла собирается в Databricks Runtime 12.2 LTS и выше.