Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Управляемые таблицы каталога Unity — это тип таблицы по умолчанию и рекомендуемый тип таблицы в Azure Databricks для Delta Lake и Apache Iceberg. Каталог Unity управляет всеми обязанностями по чтению, записи, хранению и оптимизации. См. раздел "Преобразование внешних или внешних таблиц Delta Lake" в управляемые таблицы каталога Unity.
Файлы данных для управляемых таблиц хранятся в схеме или каталоге, содержащих их. См. Укажите управляемое расположение хранилища в каталоге Unity.
Databricks рекомендует использовать управляемые таблицы, чтобы воспользоваться следующими преимуществами по сравнению с внешними и внешними таблицами:
- Сокращение затрат на хранение и вычислительные ресурсы.
- Более быстрая производительность запросов во всех типах клиентов.
- Автоматическое обслуживание и оптимизация таблиц.
- Безопасный доступ для внешних клиентов с помощью открытых API.
- Поддержка форматов Delta Lake и Apache Iceberg.
- Автоматическое обновление до последних функций платформы.
Вы можете работать с управляемыми таблицами на всех языках и продуктах, поддерживаемых в Azure Databricks. Для создания, обновления, удаления или запроса управляемых таблиц требуются определенные привилегии. См. в каталоге Unity раздел Управление привилегиями.
Note
На этой странице описаны только управляемые таблицы каталога Unity. Для управления таблицами в устаревшем хранилище метаданных Hive см. раздел Объекты базы данных в устаревшем хранилище метаданных Hive.
Преимущества управляемых таблиц каталога Unity
Управляемые таблицы Unity Catalog снижают затраты на хранение и ускоряют выполнение запросов, а также обеспечивают совместимость со сторонними инструментами для Delta Lake и Apache Iceberg. Чтобы упростить управление данными и производительность, эти управляемые таблицы используют технологии искусственного интеллекта, такие как сжатие размера файлов и интеллектуальная сбор статистических данных.
Управляемые таблицы поддерживают взаимодействие, разрешая доступ из Delta Lake и клиентов Apache Iceberg. См. как получить доступ к данным Databricks с помощью внешних систем.
Следующие возможности доступны только для управляемых таблиц в Unity Catalog и недоступны для внешних и сторонних таблиц:
| Feature | Benefits | Конфигурация |
|---|---|---|
| Каталог коммитов | Позволяет выполнять многооператорные транзакции для нескольких таблиц, ускорять планирование запросов за счёт получения метаданных непосредственно из Unity Catalog, применять контролируемые изменения схем и ограничений, а также безопасно выполнять запись из внешних движков. | Отключен по умолчанию. Чтобы включить, задайте свойство таблицы delta.feature.catalogManaged. См. раздел Включить коммиты каталога. |
| Прогнозная оптимизация | Автоматически оптимизирует макет данных и вычислительные ресурсы с помощью искусственного интеллекта, не требуя ручного обслуживания. Databricks рекомендует включить прогнозную оптимизацию для всех управляемых таблиц, чтобы снизить затраты на хранение и вычисления. Автоматически выполняется:
|
Включен по умолчанию для всех новых учетных записей, созданных 11 ноября 2024 г. или после этого. Для текущих учетных записей Azure Databricks постепенно включает прогнозную оптимизацию по умолчанию. Проверьте , включена ли прогнозная оптимизация. Сведения о настройке см. в разделе "Включение прогнозной оптимизации". |
| Многооператорные транзакции | Позволяет выполнять несколько инструкций SQL в одной или нескольких таблицах как одну атомарную фиксацию с гарантиями ACID. Все изменения либо успешно применяются одновременно, либо откатываются вместе. Используйте хранимые процедуры и скрипты SQL в критически важных рабочих нагрузках хранения. Транзакции, записываемые в управляемые таблицы Apache Iceberg, находятся в закрытой предварительной версии. |
Отключен по умолчанию. Используется BEGIN ATOMIC ... END; для неинтерактивных транзакций или BEGIN TRANSACTION; ... COMMIT; для интерактивных транзакций. См. режимы транзакций. |
| Автоматическое кластеризация жидкости | Для таблиц с прогнозной оптимизацией ликвидная кластеризация интеллектуально выбирает ключи кластеризации и автоматически обновляет их в виде изменений шаблонов запросов, чтобы повысить производительность и снизить затраты. | Отключен по умолчанию. Сведения о настройке см. в разделе "Включение кластеризации жидкости". |
| Кэширование метаданных | Кэширование метаданных транзакций в памяти повышает производительность запросов, минимизируя запросы к журналу транзакций, хранящимся в облаке. | Включено по умолчанию. Не настраиваемая. |
| Индексы полнотекстового поиска | Ускоряет поиск подстрок и ключевых слов в текстовых столбцах с помощью функций search и isearch. При применении индекса Azure Databricks пропускает файлы, которые не могут содержать соответствующие строки, уменьшая объем сканированных данных.В бета-версии и требует Databricks Runtime 18.2 и выше. |
Отключен по умолчанию. Создайте с помощью CREATE SEARCH INDEX. |
Автоматическое DROP TABLE удаление файлов после команды |
Если вы удаляете управляемую таблицу, Azure Databricks удаляет файлы данных в облачном хранилище после истечения срока восстановления (по умолчанию 7 дней), что снижает затраты на хранение. Для внешних таблиц необходимо вручную удалить файлы из контейнера хранилища. | Включено по умолчанию. Период восстановления можно настроить на уровне каталога или схемы. См. статью "Удалить управляемую таблицу". |
Доступ к данным Databricks с помощью внешних систем
Управляемые таблицы поддерживают взаимодействие , разрешая доступ из Delta Lake и клиентов Apache Iceberg.
Благодаря открытым API и предоставлению учетных данных Unity Catalog позволяет внешним движкам, таким как Trino, DuckDB, Apache Spark и Daft, а также движкам, интегрированным с каталогом Iceberg REST, таким как Dremio, получать доступ к управляемым таблицам. Для внешних клиентов, которые не поддерживают открытые API, можно использовать режим совместимости для чтения управляемых таблиц с помощью любого клиента Delta Lake или Apache Iceberg. OpenSharing, протокол открытый код, обеспечивает безопасный, управляемый обмен данными с внешними партнерами и платформами.
Ознакомьтесь с интеграциями, чтобы увидеть список поддерживаемых внешних движков, или проверьте документацию вашего движка, если он не включен в этот список.
Следующие открытые API позволяют внешним системам получать доступ к управляемым таблицам каталога Unity:
- Unity REST API предоставляет клиентам Delta Lake доступ на чтение, запись и создание управляемых таблиц Delta Lake.
- REST-каталог Iceberg (IRC) предоставляет клиентам Apache Iceberg доступ на чтение, запись и создание управляемых таблиц Apache Iceberg, а также доступ только на чтение к таблицам Delta Lake с включённой поддержкой чтения через Apache Iceberg (UniForm).
Оба API поддерживают механизм выдачи учетных данных, который предоставляет временные учетные данные с ограниченной сферой действия, наследующие привилегии запрашивающего субъекта Azure Databricks, сохраняя механизмы управления и безопасности.
OpenSharing — это протокол открытый код, который обеспечивает безопасный и управляемый доступ к внешним партнерам и платформам. OpenSharing можно использовать для предоставления партнерам временного доступа только для чтения.
Все операции чтения и записи в управляемые таблицы должны использовать имена таблиц, каталогов и схем, при наличии. Например: catalog_name.schema_name.table_name. Доступ на основе пути к управляемым таблицам каталога Unity не поддерживается (за исключением режима совместимости), так как он обходит элементы управления доступом каталога Unity и мешает правильному функционированию функций управляемых таблиц.
Создание управляемой таблицы
Чтобы создать управляемую таблицу, необходимо:
-
USE SCHEMAв родительской схеме таблицы. -
USE CATALOGв родительском каталоге таблицы. -
CREATE TABLEв родительской схеме таблицы.
Используйте следующий синтаксис, чтобы создать пустую управляемую таблицу. Замените значения заполнителей:
-
<catalog-name>: имя каталога, содержащего таблицу. -
<schema-name>: имя схемы, содержащей таблицу. -
<table-name>: это имя для таблицы. -
<column-specification>: имя и тип данных каждого столбца.
SQL
-- 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;
Python
Создание управляемой таблицы Delta Lake с помощью saveAsTable():
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", StringType())])
spark.createDataFrame([], schema).write \
.saveAsTable("<catalog-name>.<schema-name>.<table-name>")
В качестве альтернативы используйте API DeltaTableBuilder для параметров, специфичных для Delta, таких как вычисляемые столбцы и свойства таблицы:
from delta.tables import DeltaTable
DeltaTable.create(spark) \
.tableName("<catalog-name>.<schema-name>.<table-name>") \
.addColumn("<column-name>", "<data-type>") \
.property("<key>", "<value>") \
.execute()
Создайте управляемую таблицу Apache Iceberg:
from pyspark.sql.types import StructType, StructField, StringType
schema = StructType([StructField("<column-name>", StringType())])
spark.createDataFrame([], schema).write \
.format("iceberg") \
.saveAsTable("<catalog-name>.<schema-name>.<table-name>")
Чтобы обеспечить производительность операций чтения и записи, Azure Databricks периодически выполняет операции для оптимизации метаданных управляемой таблицы Apache Iceberg. Эта задача выполняется с использованием бессерверных вычислений, которым предоставлены MODIFY разрешения на доступ к таблице Apache Iceberg. Эта операция записывает только в метаданные таблицы, а вычислительная система поддерживает разрешения к таблице только на время выполнения задания.
Note
Чтобы создать таблицу Apache Iceberg, явно укажите USING iceberg. В противном случае Azure Databricks создает таблицу Delta Lake по умолчанию.
Управляемые таблицы можно создавать из результатов запроса или операций записи DataFrame. В следующих статьях демонстрируется несколько шаблонов, которые можно использовать для создания управляемой таблицы в Azure Databricks:
Чтобы создать копию существующей управляемой таблицы, используйте клон. Управляемые таблицы Delta Lake поддерживают глубокое и поверхностное клонирование. Управляемые таблицы Apache Iceberg поддерживают только глубокое клонирование. См. Клонирование таблицы в Azure Databricks и Клонирование управляемой таблицы Iceberg.
Удалите управляемую таблицу
Чтобы удалить управляемую таблицу, необходимо:
-
MANAGEна столе или ты должен быть владельцем стола. -
USE SCHEMAв родительской схеме таблицы. -
USE CATALOGв родительском каталоге таблицы.
Чтобы удалить управляемую таблицу, выполните следующую команду:
SQL
DROP TABLE IF EXISTS catalog_name.schema_name.table_name;
Python
spark.sql("DROP TABLE IF EXISTS catalog_name.schema_name.table_name")
Кроме того, в Databricks Runtime 18.2 и более поздних версиях используйте spark.catalog.dropTable():
spark.catalog.dropTable("catalog_name.schema_name.table_name", ifExists=True)
Каталог Unity поддерживает UNDROP TABLE команду для восстановления случайно удаленных управляемых таблиц. По умолчанию таблицы можно восстановить в течение 7 дней после удаления. После окончания периода восстановления Azure Databricks удаляет базовые файлы данных из вашего облачного клиента в течение 48 часов.
Настройка периода восстановления
Important
Настраиваемый период восстановления находится в общедоступной предварительной версии.
Можно настроить, как долго удаленные управляемые таблицы можно восстанавливать на уровне каталога или схемы. Если периоды восстановления задаются на обоих уровнях, параметр уровня схемы имеет приоритет для таблиц в этой схеме.
Чтобы настроить период восстановления, необходимо иметь MANAGE привилегии или права владения в каталоге или схеме. Этот параметр применяется только к таблицам, удаленным после настройки. Это не влияет на таблицы, которые уже удалены.
Период восстановления может быть установлен в 0 часов (для отключения восстановления) или от 7 до 30 дней включительно. Более длительный период восстановления (до 30 дней) обеспечивает дополнительную защиту от случайного падения критически важных рабочих данных. Более короткий период восстановления, или установка этого периода на 0, приводит к более быстрому удалению данных из удалённых таблиц, что помогает сократить затраты в сценариях, где таблицы часто создаются и удаляются в рамках ETL-конвейеров. Установка периода восстановления в значение 0 означает, что удаленные таблицы не восстанавливаются с помощью UNDROP. Файлы данных удаляются из облачного хранилища в течение 48 часов после удаления таблицы.
Чтобы задать период восстановления, используйте ALTER CATALOG или ALTER SCHEMA с предложением RETAIN DROPPED TO:
SQL
-- Set a 30-day recovery period on a catalog
ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS;
-- Set a 7-day recovery period on a schema (overrides the catalog setting)
ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS;
Python
spark.sql("ALTER CATALOG my_catalog RETAIN DROPPED TO 30 DAYS")
spark.sql("ALTER SCHEMA my_catalog.my_schema RETAIN DROPPED TO 7 DAYS")
Можно также задать период восстановления при создании каталога или схемы с предложением RETAIN DROPPED FOR :
SQL
CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS;
CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS;
Python
spark.sql("CREATE CATALOG my_catalog RETAIN DROPPED FOR 30 DAYS")
spark.sql("CREATE SCHEMA my_catalog.my_schema RETAIN DROPPED FOR 7 DAYS")
Чтобы проверить текущий период восстановления, выполните команду DESCRIBE EXTENDED. Вывод включает строку Recovery Period Hours:
SQL
DESCRIBE CATALOG EXTENDED my_catalog;
DESCRIBE SCHEMA EXTENDED my_catalog.my_schema;
Python
spark.sql("DESCRIBE CATALOG EXTENDED my_catalog").show()
spark.sql("DESCRIBE SCHEMA EXTENDED my_catalog.my_schema").show()