Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
API каталога Unity Apache Iceberg REST catalog находится в общедоступной предварительной версии в Databricks Runtime 16.4 LTS и выше.
Каталог Unity имеет реализацию API REST каталога Iceberg только для чтения, которая доступна для общего использования. Эта конечная точка рекомендуется для чтения таблиц Delta с включенной поддержкой Iceberg. Дополнительные сведения см. в разделе Чтение таблиц Databricks клиентами Iceberg (устаревшая версия).
Используйте REST-каталог Apache Iceberg для чтения и записи в таблицы, зарегистрированные в каталоге Unity на Azure Databricks, с поддержкой клиентов Iceberg, включая Apache Spark, Apache Flink, Trino и Snowflake.
Полный список поддерживаемых интеграции см. в разделе "Интеграция каталога Unity".
Используйте оконечную точку Iceberg каталога Unity Catalog
Каталог Unity предоставляет реализацию спецификации API каталога REST Iceberg.
Настройте доступ с помощью конечной точки /api/2.1/unity-catalog/iceberg-rest
. См. спецификацию Iceberg REST API для получения подробной информации об использовании данного REST API.
Заметка
Azure Databricks ввела предоставление учетных данных для некоторых клиентов, использующих Iceberg для чтения данных. Databricks рекомендует использовать выдачу учетных данных для управления доступом к расположениям облачного хранилища для поддерживаемых систем. См. "Выдача учетных данных для доступа к внешней системе" в каталоге Unity.
Если обмен учетными данными не поддерживается для клиента, необходимо настроить доступ от клиента к расположению хранилища, содержащему файлы и метаданные для таблицы Delta или Iceberg. Дополнительные сведения о конфигурации см. в документации для клиента Iceberg.
Требования
Azure Databricks поддерживает доступ к каталогам Iceberg REST для таблиц в Unity Catalog. Для использования этих конечных точек необходимо включить каталог Unity в рабочей области. Следующие типы таблиц доступны через каталог REST Iceberg:
Тема | Читайте | Напишите |
---|---|---|
Управляемый Айсберг | Да | Да |
Чужеземный Айсберг | Да | нет |
Управляемый Delta (с поддержкой операций чтения Iceberg) | Да | нет |
Внешняя Delta (с включенным режимом чтения Iceberg) | Да | нет |
Внешние таблицы Iceberg не обновляются автоматически при чтении через REST API каталога Iceberg. Для обновления необходимо запустить REFRESH FOREIGN TABLE
, чтобы прочитать последний моментальный снимок. Поддержка выдачи учетных данных в таблицах Foreign Iceberg не предусмотрена.
Заметка
Необходимо настроить таблицы Delta для доступа через REST API каталога Iceberg. См. как считывать таблицы Delta с помощью клиентов Iceberg.
Чтобы настроить доступ на чтение или запись в таблицы Azure Databricks из клиентов Iceberg с использованием REST-каталога Iceberg, необходимо выполнить следующие шаги настройки.
- Включите доступ к внешним данным для хранилища метаданных. См. Включение доступа к внешним данным в хранилище метаданных.
- Предоставьте лицу, настраивающему интеграцию, привилегию
EXTERNAL USE SCHEMA
в схеме, содержащей таблицы. См. раздел Назначение доверителяEXTERNAL USE SCHEMA
. - Выполните аутентификацию с использованием личного токена доступа Azure Databricks или OAuth. См. Разрешение доступа к ресурсам Azure Databricks.
Использование таблиц Iceberg с Apache Spark
Ниже приведен пример настройки Apache Spark для доступа к таблицам Azure Databricks с помощью API REST каталога Iceberg с помощью проверки подлинности OAuth:
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
# Configuration for accessing Uniform tables in Unity Catalog
"spark.sql.catalog.<spark-catalog-name>": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<spark-catalog-name>.type": "rest",
"spark.sql.catalog.<spark-catalog-name>.rest.auth.type": "oauth2",
"spark.sql.catalog.<spark-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg-rest",
"spark.sql.catalog.<spark-catalog-name>.oauth2-server-uri": "<workspace-url>/oidc/v1/token",
"spark.sql.catalog.<spark-catalog-name>.credential":"<oauth_client_secret>",
"spark.sql.catalog.<spark-catalog-name>.warehouse":"<uc-catalog-name>"
"spark.sql.catalog.<spark-catalog-name>.scope":"all-apis"
Замените следующие переменные:
-
<uc-catalog-name>
: имя каталога в каталоге Unity, содержащего таблицы. -
<spark-catalog-name>
: имя, которое необходимо назначить этому каталогу в сеансе Spark. -
<workspace-url>
: URL-адрес рабочей области Azure Databricks. -
<oauth_client_id>
: идентификатор клиента OAuth для субъекта проверки подлинности. -
<oauth_client_secret>
: секрет клиента OAuth для аутентифицирующего субъекта.
С помощью этих конфигураций можно запрашивать таблицы в каталоге Unity с помощью Apache Spark. Чтобы получить доступ к таблицам в нескольких каталогах, необходимо настроить каждый каталог отдельно.
При запросе таблиц в каталоге Unity с помощью конфигураций Spark помните следующее:
Вам потребуется
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions"
только в том случае, если вы запускаете хранимые процедуры, специфичные для Айсберга,.Azure Databricks использует облачное хранилище объектов для всех таблиц. Необходимо добавить JAR-файл iceberg-spark-runtime в качестве пакета Spark.
- AWS:
org.apache.iceberg:iceberg-aws-bundle:<iceberg-version>
- Лазурный:
org.apache.iceberg:iceberg-azure-bundle:<iceberg-version>
- GCP:
org.apache.iceberg:iceberg-gcp-bundle:<iceberg-version>
Для получения дополнительной информации см. документацию по интеграции Iceberg AWS для Spark.
Заметка
Эти конфигурации не требуются при доступе к таблицам Iceberg из Azure Databricks. Загрузка JARs Iceberg на внешние кластеры Azure Databricks не поддерживается.
- AWS:
Чтение таблиц Azure Databricks с помощью Snowflake
Ниже приведен пример рекомендуемых параметров конфигурации, позволяющих Snowflake читать таблицы Azure Databricks, подключаясь к каталогу REST Iceberg в каталоге Unity:
CREATE OR REPLACE CATALOG INTEGRATION <catalog-integration-name>
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = '<uc-schema-name>'
REST_CONFIG = (
CATALOG_URI = '<workspace-url>/api/2.1/unity-catalog/iceberg-rest',
WAREHOUSE = '<uc-catalog-name>'
ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS
)
REST_AUTHENTICATION = (
TYPE = BEARER
BEARER_TOKEN = '<token>'
)
ENABLED = TRUE;
Замените следующие переменные:
-
<catalog-integration-name>
: имя, которое нужно назначить каталогу, зарегистрированным в Snowflake. -
<uc-schema-name>
: имя схемы в каталоге Unity, к который требуется получить доступ. -
<uc-catalog-name>
: имя каталога в каталоге Unity, к который требуется получить доступ. -
<workspace-url>
: URL-адрес рабочей области Azure Databricks. -
<token>
: маркер PAT для субъекта, настраивающего интеграцию.
Использование таблиц Azure Databricks с PyIceberg
Ниже приведен пример параметров конфигурации, позволяющих PyIceberg получить доступ к таблицам Azure Databricks, подключившись к каталогу REST Iceberg в каталоге Unity:
catalog:
unity_catalog:
uri: https://<workspace-url>/api/2.1/unity-catalog/iceberg-rest
warehouse: <uc-catalog-name>
token: <token>
Замените следующие переменные:
-
<workspace-url>
: URL-адрес рабочей области Azure Databricks. -
<uc-catalog-name>
: имя каталога в каталоге Unity, к который требуется получить доступ. -
<token>
: маркер PAT для субъекта, настраивающего интеграцию.
См. документацию по конфигурации каталога REST PyIceberg.
Пример команды curl для REST API
Для загрузки таблицы можно также использовать вызов REST API, например в этом curl
примере:
curl -X GET -H "Authorization: Bearer $OAUTH_TOKEN" -H "Accept: application/json" \
https://<workspace-instance>/api/2.1/unity-catalog/iceberg-rest/v1/catalogs/<uc_catalog_name>/namespaces/<uc_schema_name>/tables/<uc_table_name>
Затем вы должны получить ответ следующим образом:
{
"metadata-location": "abfss://[email protected]/path/to/iceberg/table/metadata/file",
"metadata": <iceberg-table-metadata-json>,
"config": {
"expires-at-ms": "<epoch-ts-in-millis>",
"adls.sas-token.<storage-account-name>.dfs.core.windows.net": "<temporary-sas-token>"
}
}
Заметка
Поле expires-at-ms
в ответе указывает время истечения срока действия учетных данных и имеет время истечения срока действия по умолчанию в течение одного часа. Для повышения производительности клиент кэширует учетные данные до истечения срока действия перед запросом нового.