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


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

Вы можете использовать функцию клонирования Azure Databricks для добавочного преобразования данных из источников данных Parquet или 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 с режимом merge-on-read, в которых были обновления, удаления или объединения.
  • Ниже приведены ограничения для клонирования таблиц 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 и выше.