Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если вы включили внешний доступ к данным в Unity Catalog, вы можете добавить внешний доступ к управляемым конвейером и автономным материализованным представлениям и таблицам потоков. Это позволяет внешним клиентам Delta и Iceberg получать доступ к наборам данных через интерфейсы REST API каталога Unity и каталога Iceberg, не требуя полного копирования данных.
Внешний доступ к данным работает для наборов данных, управляемых конвейерами Lakeflow, а также для автономных материализированных представлений и таблиц потоков.
Capabilities
Использование внешнего доступа к данным открывает те же данные, что и в Azure Databricks для управляемых конвейерами и автономных материализованных представлений и потоковых таблиц, не создавая при этом дубликаты данных. Это дает следующие характеристики для производительности и функциональности:
- Копирование данных не требуется: Внешний доступ включен без дедупликации полного набора данных.
- Внешний доступ через API: Чтение материализованных представлений и потоковых таблиц с помощью API Delta Lake или Iceberg.
- Согласованность чтения после записи: После обновления набора данных внешние читатели могут получить доступ к актуальным данным, что гарантирует отсутствие устаревших данных. Обновления доступны сразу после обновления.
- Объект одной таблицы: Наборы данных отображаются внешне как управляемые таблицы с тем же именем, что и исходный набор данных в API каталога Unity.
- Низкая стоимость: Так как полный набор данных не копируется, затраты на предоставление внешнего доступа низки.
Requirements
Требования к наборам данных:
- Каталог Unity: Таблицы потоковой передачи и материализованные представления должны использоваться в каталоге Unity.
- Версия среды выполнения Databricks: Необходимо использовать Databricks Runtime 17.3 и более поздней версии.
- Режим публикации по умолчанию: Внешняя читаемость поддерживается только в режиме публикации по умолчанию. Чтобы использовать внешнюю читаемость, переходите к режиму публикации по умолчанию. Функции, зависящие от внешних метаданных, такие как CDF материализованного представления, будут работать в устаревшем режиме публикации.
Требования для клиентов:
- Версия Delta API: Клиент должен поддерживать API Delta Lake версии 4.0.0 или выше, включая векторы удаления, и должен использовать API каталога Unity Catalog для доступа.
- Версия API Айсберга: Кроме того, клиент может получить доступ с помощью API каталога Iceberg, поддерживающих спецификацию Iceberg версии 3.
-
Привилегии Unity Catalog: Субъект, читающий наборы данных извне, должен иметь привилегию EXTERNAL USE SCHEMA на схему и привилегию
SELECTна таблицу.
Note
Если клиент не поддерживает эти требования, можно также использовать режим совместимости, который поддерживает все клиенты Delta и Iceberg, но требует создания полной копии набора данных.
Включение доступа к набору данных
Существует два шага для обеспечения внешнего доступа к набору данных.
Включите внешние метаданные с помощью конфигурации конвейера или свойства таблицы. Настройка на уровне таблицы имеет приоритет над настройками конвейера, если заданы оба параметра, и поддерживается как для управляемых конвейером, так и для автономных потоковых таблиц и материализованных представлений.
Конфигурация конвейера: Установите
pipelines.externalMetadata.enabledв значениеtrue, чтобы включить внешние метаданные для всех наборов данных в конвейере. Автономные материализованные представления и таблицы потоков, созданные с помощью Databricks SQL, не имеют конфигурации конвейера; Вместо этого используйте свойство таблицы.Пользовательский интерфейс параметров конвейера
В настройках конвейера выполните следующие шаги:
- Откройте конвейер и нажмите кнопку "Параметры".
- В разделе "Конфигурация" добавьте пару "ключ-значение": "Ключ
pipelines.externalMetadata.enabled", "Значениеtrue". - Нажмите кнопку Сохранить.
JSON конфигурации конвейера
В разделе
configurationвашего JSON конвейера добавьте:{ "configuration": { "pipelines.externalMetadata.enabled": "true" } }Свойство таблицы: Добавьте следующее свойство в определение потоковой таблицы или материализованного представления. Для конвейеров Lakeflow Connect см. свойства таблицы Set Delta.
CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES('pipelines.externalMetadata.enabled' = 'true')
После сохранения конфигурации запустите или перезапустите конвейер, чтобы применить изменения:
- Активированные конвейеры: один раз запустите конвейер.
- Непрерывные конвейеры: остановка и перезапуск конвейера.
Для автономных SQL-объектов Databricks используйте
CREATE OR REPLACE MATERIALIZED VIEWилиCREATE OR REFRESH STREAMING TABLEс элементом таблицы. Инструкция create или refresh применяет это свойство.Если вы планируете читать набор данных с помощью современного клиента Iceberg, добавьте следующие свойства UniForm Iceberg V3 в дополнение к свойству внешних метаданных. Для конвейеров Lakeflow Connect см. свойства таблицы Set Delta.
Недвижимость Использование 'pipelines.externalMetadata.enabled' = 'true'Включите внешний доступ к столу. Такая настройка на уровне таблицы имеет приоритет над конфигурацией конвейера, когда установлены обе параметры. 'delta.columnMapping.mode' = 'name'Для Iceberg необходимо сопоставление столбцов. 'delta.enableRowTracking' = 'true'Включите отслеживание строк при чтении Iceberg. 'delta.universalFormat.enabledFormats' = 'iceberg'Включите чтение из Iceberg. 'delta.enableIcebergCompatV3' = 'true'Используйте Iceberg V3 для чтения таблиц Iceberg. CREATE OR REFRESH [MATERIALIZED VIEW | STREAMING TABLE] tbl_name TBLPROPERTIES( 'delta.columnMapping.mode' = 'name', 'delta.enableRowTracking' = 'true', 'delta.enableIcebergCompatV3' = 'true', 'delta.universalFormat.enabledFormats' = 'iceberg', 'pipelines.externalMetadata.enabled' = 'true')Для материализованных представлений можно использовать вместо этого эквивалентный синтаксис
USING ICEBERG.CREATE OR REFRESH MATERIALIZED VIEW tbl_name USING ICEBERGДля наборов данных, управляемых конвейером, используйте инструкции обновления конвейера выше для применения свойств Iceberg. Для автономных SQL-объектов Databricks запустите определение объекта с обновлёнными свойствами. Используйте
CREATE OR REPLACE MATERIALIZED VIEWдля материализованного представления илиCREATE OR REFRESH STREAMING TABLEдля потоковой таблицы. Чтобы просмотреть свойства набора данных, используйте операторы SQLDESCRIBE DETAILилиDESCRIBE EXTENDED.
Устранение неполадок с доступом к внешним данным
Если вы считаете, что внешние метаданные устарели, принципал с MODIFY привилегией в таблице может вручную запустить обновление метаданных на вычислениях общего кластера с помощью Databricks Runtime 17.3 или выше:
REPAIR TABLE <catalog>.<schema>.<table-name> SYNC METADATA;
Вы можете проверить наличие метаданных Iceberg в интерфейсе Catalog Explorer на странице с деталями таблицы. В качестве альтернативы выполните следующие команды в SQL-редакторе или в ноутбуке Azure Databricks:
DESCRIBE DETAIL <catalog>.<schema>.<table-name>;
DESCRIBE EXTENDED <catalog>.<schema>.<table-name>;
Для потоковой таблицы сравните версию метаданных Iceberg с последней версией потоковой таблицы. Сравнение версий для материализованных просмотров пока недоступно.
Чтение данных из внешних клиентов
В следующих разделах приведены примеры того, как читать ваш набор данных из разных клиентов и сред.
Для подробностей настройки см. доступ к клиенту Delta и доступ к клиенту Iceberg.
Использование REST API Unity с модулем чтения Spark Delta
Используйте Apache Spark™ версии 4.0 или более поздней. Вы можете скачать с https://spark.apache.org/downloads.html.
В зависимости от используемого облачного провайдера выполните следующую команду, чтобы запустить оболочку Spark SQL с Delta 4.0 и Unity Catalog.
AWS
bin/spark-sql \ --packages org.apache.spark:spark-hadoop-cloud_2.13:4.0.0,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>Azure
bin/spark-sql \ --packages org.apache.hadoop:hadoop-azure:3.3.6,io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>GCP
bin/spark-sql \ --packages io.unitycatalog:unitycatalog-spark_2.13:0.3.1 \ --conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \ --conf spark.sql.catalog.spark_catalog=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.hadoop.fs.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem \ --conf spark.hadoop.fs.AbstractFileSystem.gs.impl=com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS \ --conf spark.sql.catalog.<uc-catalog-name>=io.unitycatalog.spark.UCSingleCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url> \ --conf spark.sql.catalog.<uc-catalog-name>.token=<PAT> \ --conf spark.sql.defaultCatalog=<uc-catalog-name>В оболочке SQL теперь можно получить доступ к набору данных с помощью Spark SQL. Рассмотрим пример.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Используйте средство чтения Snowflake Iceberg
В Snowflake можно использовать средство чтения Iceberg. Для этого требуется поддержка Iceberg версии 3 в Snowflake.
Настройте каталог REST Iceberg в Snowflake.
CREATE OR REPLACE CATALOG INTEGRATION my_uc_int 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' CATALOG_NAME = '<uc-catalog-name>' ACCESS_DELEGATION_MODE = VENDED_CREDENTIALS ) REST_AUTHENTICATION = ( TYPE = BEARER BEARER_TOKEN = '<PAT>' ) ENABLED = TRUE; CREATE OR REPLACE ICEBERG TABLE my_table CATALOG = 'my_uc_int' CATALOG_TABLE_NAME = '<uc-table-name>';Получите доступ к вашему набору данных через Snowflake SQL.
ALTER ICEBERG TABLE my_table REFRESH; SELECT * FROM my_table;
Использование каталога REST Iceberg с помощью средства чтения Spark Iceberg
Используйте Apache Spark™ версии 4.0 или более поздней. Вы можете скачать с https://spark.apache.org/downloads.html.
В AWS выполните следующую команду, чтобы запустить оболочку SQL Spark с помощью Iceberg версии 3.
bin/spark-sql \ --packages org.apache.iceberg:iceberg-spark-runtime-4.0_2.13:1.10.0,org.apache.iceberg:iceberg-aws-bundle:1.10.0 \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.<uc-catalog-name>=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.<uc-catalog-name>.io-impl=org.apache.iceberg.aws.s3.S3FileIO \ --conf spark.sql.catalog.<uc-catalog-name>.type=rest \ --conf spark.sql.catalog.<uc-catalog-name>.uri=<workspace_url>/api/2.1/unity-catalog/iceberg-rest \ --conf spark.sql.catalog.<uc-catalog-name>.token='<PAT>' \ --conf spark.sql.catalog.<uc-catalog-name>.warehouse=<uc-catalog-name> \ --conf spark.sql.iceberg.vectorization.enabled=falseДоступ к набору данных из Spark SQL.
spark-sql ()> SELECT * FROM <uc-catalog>.<uc-schema>.<uc-table-name>;
Миграция из режима совместимости
Если в настоящее время вы предоставляете общий доступ к набору данных с помощью режима совместимости, вы можете перейти на использование внешнего доступа к данным.
- Включите эту функцию, выполнив действия, описанные в разделе "Как включить доступ к набору данных".
- Отключите режим совместимости. См . раздел "Отключить режим совместимости"
Ограничения
Ниже приведены известные ограничения с внешним доступом к данным для потоковых таблиц и материализованных представлений.
- Внешние записи: Внешние записи в наборы данных конвейера не поддерживаются.
- Доступ по пути: Внешние средства чтения, которым требуется доступ по пути (то есть чтение данных напрямую из расположения хранилища, а не через интерфейс API UC), не поддерживаются. Для поддержки доступа на основе путей можно использовать режим совместимости, который поддерживает доступ на основе пути, но требует полной копии набора данных.
- Функции безопасности: Поддержка защиты на уровне строк или маскирования на уровне столбцов при внешнем чтении не поддерживается.
- Путешествия во времени:Путешествия во времени с помощью этой функции не поддерживаются.
- Фиксации каталога (бета-версия): фиксации каталоганесовместимы с внешним доступом к данным. Чтобы использовать внешний доступ к данным в таблице потоков или материализованном виде, сначала нужно отключить коммиты каталога.
- Fabric: Чтение из Microsoft Fabric не поддерживается.