Инкрементное клонирование таблиц Parquet и Apache Iceberg в Delta Lake

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

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

Внимание

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

Примечание.

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

Когда следует использовать клон для добавочного приема данных 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 с разделами в каталоге, таком как Unity Catalog или устаревшее хранилище метаданных Hive, перед клонированием и использованием имени таблицы для идентификации исходной таблицы. Нельзя использовать путевой синтаксис клонирования для таблиц Parquet с разделами.
  • Вы не можете клонировать таблицы Iceberg, которые испытали развитие разделов.
  • Ниже приведены ограничения для клонирования таблиц Iceberg с партициями, определенными для усеченных столбцов.
    • В Databricks Runtime 12.2 LTS и ниже поддерживается только усеченный тип столбца string.
    • В Databricks Runtime 13.3 LTS и более поздних версиях можно работать с усеченными столбцами типов string, longили int.
    • Azure Databricks не поддерживает работу с усеченными столбцами типа decimal.
  • Добавочный клон синхронизирует изменения схемы и свойства из исходной таблицы. Все изменения схемы и файлы данных, записанные непосредственно в клонированную таблицу, переопределяются.
  • Каталог Unity не поддерживает мелкие клоны для таблиц Parquet или Iceberg.
  • При определении пути нельзя использовать шаблоны глобов.

Примечание.

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