Управляемые таблицы каталога Unity в Azure Databricks для Delta Lake и Apache Iceberg

На этой странице описаны управляемые таблицы каталога Unity в Delta Lake и Apache Iceberg, тип таблицы по умолчанию и рекомендуемый тип таблицы в Azure Databricks. Эти таблицы полностью управляются и оптимизированы каталогом Unity, предлагают производительность, операционные преимущества и более низкие затраты на хранение и вычисления по сравнению с внешними и внешними таблицами, так как управляемые таблицы учатся на основе шаблонов чтения и записи. Каталог Unity управляет всеми обязанностями по чтению, записи, хранению и оптимизации для управляемых таблиц. См. статью "Преобразование внешней разностной таблицы в управляемую таблицу каталога Unity".

Файлы данных для управляемых таблиц хранятся в схеме или каталоге, содержащих их. См. Укажите управляемое расположение хранилища в каталоге Unity.

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

  • Сокращение затрат на хранение и вычислительные ресурсы.
  • Более быстрая производительность запросов во всех типах клиентов.
  • Автоматическое обслуживание и оптимизация таблиц.
  • Безопасный доступ для клиентов, отличных от Databricks, с помощью открытых API.
  • Поддержка форматов Delta Lake и Iceberg.
  • Автоматическое обновление до последних функций платформы.

Управляемые таблицы поддерживают взаимодействие, разрешая доступ из клиентов Delta Lake и Iceberg. С помощью открытых API и учётных данных Unity Catalog позволяет внешним движкам, таким как Trino, DuckDB, Apache Spark, Daft и Iceberg REST, а также каталожным движкам, интегрированным с Dremio, получать доступ к управляемым таблицам. Для внешних клиентов, не поддерживающих открытые API, можно использовать режим совместимости для чтения управляемых таблиц с помощью любого клиента Delta Lake или Iceberg. Delta Sharing, протокол с открытым исходным кодом, обеспечивает безопасный, управляемый обмен данными с внешними партнерами и платформами.

Вы можете работать с управляемыми таблицами на всех языках и продуктах, поддерживаемых в Azure Databricks. Для создания, обновления, удаления или запроса управляемых таблиц требуются определенные привилегии. См. в каталоге Unity раздел Управление привилегиями.

Note

На этой странице описаны только управляемые таблицы каталога Unity. Для управления таблицами в устаревшем хранилище метаданных Hive см. раздел Объекты базы данных в устаревшем хранилище метаданных Hive.

Зачем использовать управляемые таблицы каталога Unity?

Управляемые таблицы Unity Catalog снижают затраты на хранение и ускоряют выполнение запросов, а также обеспечивают совместимость со сторонними инструментами для Delta Lake и Apache Iceberg. Чтобы упростить управление данными и производительность, эти управляемые таблицы используют технологии искусственного интеллекта, такие как сжатие размера файла и интеллектуальная сбор статистических данных.

Следующие возможности доступны только для управляемых таблиц Unity Catalog и недоступны для внешних и сторонних таблиц:

Feature Benefits Включено по умолчанию? Конфигурируемый?
Каталог коммитов Позволяет выполнять многооператорные транзакции для нескольких таблиц, ускорять планирование запросов за счёт получения метаданных непосредственно из Unity Catalog, применять контролируемые изменения схем и ограничений, а также безопасно выполнять запись из внешних движков. Нет. Да.
delta.feature.catalogManaged Задайте свойство таблицы. См. раздел Включить коммиты каталога.
Прогнозная оптимизация Предиктивная оптимизация автоматически оптимизирует структуру данных и вычислительные ресурсы с помощью искусственного интеллекта без необходимости выполнять операции по ручному обслуживанию. Databricks рекомендует включить прогнозную оптимизацию для всех управляемых таблиц, чтобы снизить затраты на хранение и вычисления.
Прогнозная оптимизация автоматически выполняется:
Да, для всех новых учетных записей, созданных 11 ноября 2024 г. или после этого.
Для текущих учетных записей Azure Databricks постепенно включает прогнозную оптимизацию по умолчанию. Проверьте , включена ли прогнозная оптимизация.
Да. См. раздел "Включить прогнозную оптимизацию".
Многооператорные транзакции Позволяет выполнять несколько инструкций SQL в одной или нескольких таблицах как одну атомарную фиксацию с гарантиями ACID. Все изменения либо успешно применяются одновременно, либо откатываются вместе. Используйте хранимые процедуры и скрипты SQL в критически важных рабочих нагрузках хранения.
Транзакции, записываемые в управляемые таблицы Delta Lake, находятся в общедоступной предварительной версии.
Транзакции, записываемые в управляемые таблицы Apache Iceberg, находятся в закрытой предварительной версии.
Нет. Да. Используется BEGIN ATOMIC ... END; для неинтерактивных транзакций или BEGIN TRANSACTION; ... COMMIT; для интерактивных транзакций. См. режимы транзакций.
Автоматическое кластеризация жидкости Для таблиц с предсказуемой оптимизацией автоматическое кластеризация жидкости позволяет Azure Databricks интеллектуально выбирать ключи кластеризации. По мере изменения шаблонов запросов Azure Databricks автоматически обновляет ключи кластеризации для повышения производительности и снижения затрат. Нет. Да. См. раздел "Включить кластеризацию жидкости".
Кэширование метаданных Кэширование метаданных транзакций в памяти повышает производительность запросов, минимизируя запросы к журналу транзакций, хранящимся в облаке. Да. Нет. Кэширование метаданных всегда включено для управляемых таблиц.
Индексы полнотекстового поиска Индексы полнотекстового поиска ускоряют подстроку и поиск ключевых слов в текстовых столбцах управляемых таблиц. При применении индекса Azure Databricks пропускает файлы, которые не могут содержать соответствующие строки, уменьшая объем сканированных данных.
Индексы полнотекстового поиска ускоряют поиск подстрок и слов с помощью функций search и isearch.
Полнотекстовые индексы поиска находятся в бета-версии и требуют Databricks Runtime 18.2 и более поздних версий.
Нет. Да. Создать с помощью CREATE INDEX (вторичного) или CREATE SEARCH INDEX (полнотекстового).
Автоматическое DROP TABLE удаление файлов после команды Если вы DROP управляемую таблицу, Azure Databricks удаляет данные из облачного хранилища через 8 дней, чтобы сократить ваши затраты на хранение. Для внешних таблиц необходимо вручную удалить файлы из контейнера хранилища. Да. Нет. Для управляемых таблиц файлы всегда удаляются автоматически через 8 дней.

Доступ к данным Databricks с помощью внешних систем

Управляемые таблицы поддерживают взаимодействие , разрешая доступ из клиентов Delta Lake и Iceberg. С помощью открытых API-интерфейсов и выдачи учетных данных каталог Unity позволяет внешним движкам, таким как Trino, DuckDB, Apache Spark, Daft и Iceberg, а также каталогам REST, интегрированными с движками, такими как Dremio и Snowflake, получать доступ к управляемым таблицам. Ознакомьтесь с интеграциями, чтобы увидеть список поддерживаемых внешних движков, или проверьте документацию вашего движка, если он не включен в этот список.

Следующие открытые API предоставляют внешним системам доступ к управляемым таблицам каталога Unity:

  • REST API Unity: предоставляет доступ для чтения, записи и создания доступа для клиентов Delta к управляемым таблицам Delta.
  • Каталог REST Iceberg (IRC): предоставляет доступ на чтение, запись и создание для клиентов Айсберг к управляемым таблицам Айсберг и доступ только для чтения к таблицам Delta с включенной функцией чтения Айсберг (UniForm).

Оба API поддерживают механизм выдачи учетных данных, который предоставляет временные учетные данные с ограниченной сферой действия, наследующие привилегии запрашивающего субъекта Azure Databricks, сохраняя механизмы управления и безопасности.

Кроме того, Delta Sharing — это протокол с открытым исходным кодом, который обеспечивает безопасный и управляемый доступ к внешним партнерам и платформам. Вы можете использовать Delta Sharing для предоставления партнерам временного доступа только для чтения.

Все операции чтения и записи в управляемые таблицы должны использовать имена таблиц, каталогов и схем, при наличии. Например: catalog_name.schema_name.table_name. Доступ на основе пути к управляемым таблицам каталога Unity не поддерживается (за исключением режима совместимости), так как он обходит элементы управления доступом каталога Unity и мешает правильному функционированию функций управляемых таблиц.

Создание управляемой таблицы

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

  • USE SCHEMA в родительской схеме таблицы.
  • USE CATALOG в родительском каталоге таблицы.
  • CREATE TABLE в родительской схеме таблицы.

Используйте следующий синтаксис SQL, чтобы создать пустую управляемую таблицу с помощью SQL. Замените значения заполнителей:

  • <catalog-name>: имя каталога, содержащего таблицу.
  • <schema-name>: имя схемы, содержащей таблицу.
  • <table-name>: это имя для таблицы.
  • <column-specification>: имя и тип данных каждого столбца.
-- Create a managed Delta table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
);

-- Create a managed Iceberg table
CREATE TABLE <catalog-name>.<schema-name>.<table-name>
(
  <column-specification>
)
USING iceberg;

Чтобы обеспечить производительность операций чтения и записи, Azure Databricks периодически выполняет операции для оптимизации метаданных управляемой таблицы Iceberg. Эта задача выполняется с помощью бессерверных вычислений, имеющих MODIFY разрешения на таблицу Айсберга. Эта операция записывает только в метаданные таблицы, а вычислительная система поддерживает разрешения к таблице только на время выполнения задания.

Note

Чтобы создать таблицу Айсберга, явно укажите USING iceberg. В противном случае Azure Databricks создает таблицу Delta Lake по умолчанию.

Управляемые таблицы можно создавать из результатов запроса или операций записи DataFrame. В следующих статьях демонстрируется несколько шаблонов, которые можно использовать для создания управляемой таблицы в Azure Databricks:

Удалите управляемую таблицу

Чтобы удалить управляемую таблицу, необходимо:

  • MANAGE на столе или ты должен быть владельцем стола.
  • USE SCHEMA в родительской схеме таблицы.
  • USE CATALOG в родительском каталоге таблицы.

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

DROP TABLE IF EXISTS catalog_name.schema_name.table_name;

Каталог Unity поддерживает UNDROP TABLE команду для восстановления удаленных управляемых таблиц в течение 8 дней. Через 8 дней Azure Databricks помечает базовые данные для удаления из облачного клиента и удаляет файлы во время автоматического обслуживания таблиц. См. UNDROP.