Включение федерации каталога OneLake

Это важно

Эта функция доступна в общедоступной предварительной версии.

В этой статье показано, как считывать данные в OneLake с помощью федерации каталога. Это позволяет выполнять запросы каталога Unity непосредственно в хранилище OneLake.

Федерация OneLake позволяет анализировать данные, хранящиеся в Lakehouse или хранилище, не копируя их, обеспечивая эффективную аналитику и возможности ИИ/BI в Azure Databricks непосредственно к данным OneLake. Доступ к данным доступен только для чтения.

Перед тем как начать

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

Требования к рабочей области:

  • Рабочая область активирована для Unity Catalog.

Требования к вычислениям:

  • Сетевое подключение вашего вычислительного ресурса к целевым системам баз данных. Смотрите Рекомендации по сетевым настройкам для федерации Lakehouse.
  • Вычислительные ресурсы Azure Databricks должны использовать Databricks Runtime 18.0 или более поздней версии и стандартный режим доступа.
  • Хранилища SQL должны использовать 2025.40 или более поздней версии.

Необходимые разрешения:

  • Чтобы создать подключение, необходимо быть администратором хранилища метаданных или пользователем с CREATE CONNECTIONCREATE STORAGE CREDENTIAL привилегиями в хранилище метаданных каталога Unity, подключенном к рабочей области.
  • Чтобы создать внешний каталог, необходимо иметь разрешение CREATE CATALOG на хранилище метаданных и либо быть владельцем подключения, либо обладать привилегией CREATE FOREIGN CATALOG на подключение.

Дополнительные требования к разрешениям указываются в каждом последующем разделе, посвящённом задачам.

  • Необходимо иметь разрешения на создание ресурсов в Azure, настройку доступа в Fabric и управление каталогом Unity в Azure Databricks.
  • Поддерживаемые методы проверки подлинности:
    • Управляемое удостоверение Azure через коннектор доступа для Azure Databricks
    • Учетная запись службы Azure

Параметры клиента и рабочей области Fabric:

  • Администратор Fabric должен включить, чтобы субъекты-службы могли использовать параметры клиента API Fabric . Это позволяет управляемым удостоверениям и субъектам-службам проходить проверку подлинности в Fabric. Дополнительные сведения см. в разделе "Настройки арендатора служебного элемента".
  • Администратор Структуры должен включить настройку клиента “Разрешить приложениям, работающим вне Структуры, получать доступ к данным через OneLake”. Это позволяет Azure Databricks подключаться к хранилищу OneLake. Дополнительные сведения см. в статье "Разрешить приложениям, работающим за пределами Структуры, получать доступ к данным через OneLake".
  • Администратор Fabric должен включить параметр клиента Использовать кратковременные маркеры SAS, делегированные пользователем. Этот параметр позволяет OneLake выдавать кратковременные токены SAS с поддержкой Entra, которые Azure Databricks использует для чтения данных OneLake. Дополнительные сведения см. в разделе с подписанными url-адресами OneLake.
  • В рабочей области Fabric, содержащей ваши данные, необходимо включить аутентификацию с использованием пользовательских SAS-токенов OneLake. Перейдите к параметрам делегированных>параметров> рабочей областиOneLake, чтобы включить этот параметр.

Поддерживаются следующие элементы данных Fabric:

  • Структура Lakehouse
  • Склад тканей

Настройка федерации каталога

Ниже описано, как создать подключение и внешний каталог для федерации OneLake.

Шаг 1. Настройка проверки подлинности Azure

Федерация OneLake поддерживает два метода проверки подлинности.

  • Управляемое удостоверение Azure (рекомендуется): использует соединитель доступа Databricks с управляемым удостоверением.
  • Служебный принципал Azure использует приложение Microsoft Entra ID с учетными данными клиента. Этот метод поддерживает межтенантную проверку подлинности, позволяя Databricks получать доступ к рабочим областям Fabric, расположенным в другом клиенте Azure.

Вариант A. Создание соединителя доступа (управляемое удостоверение)

Соединитель доступа Databricks создает управляемое удостоверение, которое Azure Databricks использует для проверки подлинности с помощью OneLake.

  1. На портале Azure найдите и создайте новый соединитель доступа для ресурса Azure Databricks .

  2. Следуйте инструкциям по созданию соединителя. Этот ресурс создает управляемое удостоверение, назначаемое системой.

  3. Запишите идентификатор ресурса только что созданного соединителя. Этот идентификатор требуется при создании учетных данных хранилища каталога Unity.

    Идентификатор ресурса имеет формат:

    /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

Дополнительные сведения о создании соединителей доступа и использовании управляемых удостоверений см. в статье "Использование управляемых удостоверений Azure в каталоге Unity для доступа к хранилищу".

Вариант B: Регистрация служебного принципала

Если вы предпочитаете использовать учетную запись службы вместо управляемой идентификации:

  1. На портале Azure перейдите крегистрации приложений> зарегистрируйте новое приложение (или используйте существующий).
  2. Запишите идентификатор приложения (клиента) и идентификатор каталога (клиента).
  3. В разделе "Сертификаты и секреты" создайте новый секрет клиента и запишите значение секрета.

Шаг 2. Предоставление разрешений в Fabric

Предоставьте управляемому удостоверению или учетной записи службы разрешение на чтение данных Fabric.

  1. На портале Fabric перейдите в рабочую область, содержащую объекты данных Lakehouse или Warehouse.
  2. В рабочей области кликните по значку шестеренки параметров рабочей области, а затем выберите Управление доступом.
  3. Нажмите кнопку "Добавить людей или группы".
  4. Найдите и выберите управляемое удостоверение или служебный принципал. Для управляемого удостоверения имя должно соответствовать созданному ранее коннектору доступа. Для учетной записи службы выполните поиск зарегистрированного имени приложения.
  5. Назначьте как минимум удостоверение роли участника. Вы также можете назначить роли участника или администратора .
  6. Нажмите кнопку "Добавить".
  7. Убедитесь, что удостоверение отображается в списке доступа с соответствующей ролью. Разрешения для отдельных элементов Lakehouse и Warehouse наследуются от роли на уровне рабочей области.

Шаг 3. Создание учетных данных хранилища

Создайте учетные данные для хранения в Unity Catalog, которые будут ссылаться на идентификатор, настроенный на шаге 1.

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.
  2. В верхней части области каталога щелкните значок и выберите "Создать учетные данные " в меню.

Если вы используете управляемое удостоверение:

  1. В модале создания учетных данных для типа учетных данных выберите Управляемое удостоверение Azure.
  2. Для имени учетных данных введите имя учетных данных хранилища (например, onelake_storage_cred).
  3. Для идентификатора соединителя Access введите идентификатор ресурса созданного ранее соединителя доступа.
  4. (Необязательно) Добавьте комментарий.
  5. Нажмите кнопку Создать.

Если вы используете Service Principal:

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

curl -X POST -n \
https://<databricks-instance>/api/2.1/unity-catalog/storage-credentials \
-d '{
   "name": "<storage-credential-name>",
   "read_only": true,
   "azure_service_principal": {
      "directory_id": "<directory-id>",
      "application_id": "<application-id>",
      "client_secret": "<client-secret>"
   },
   "skip_validation": "false"
   }'

Вы также можете создавать учетные данные хранения с помощью поставщика Databricks Terraform и databricks_storage_credential.

Шаг 4. Создание подключения к каталогу Unity

Создайте подключение каталога Unity, которое использует учетные данные хранилища для доступа к OneLake.

Обозреватель каталогов

  1. В рабочей области Azure Databricks щелкните значок данных.Каталог.
  2. В верхней части области каталога щелкните значок и выберите "Создать подключение " в меню.
  3. На странице "Основы подключения" введите имя подключения (например, onelake_connection).
  4. Выберите тип подключенияOneLake.
  5. (Необязательно) Добавьте комментарий.
  6. Нажмите кнопку Далее.
  7. На странице сведений о подключениивыберите учетные данные хранилища, созданные на предыдущем шаге (например, onelake_storage_cred).
  8. В поле "Рабочая область" введите идентификатор рабочей области Fabric.
  9. Нажмите Create connection (Создать подключение).

SQL

Выполните следующую команду в записной книжке или редакторе sql-запросов Databricks. Замените значения по умолчанию:

  • <connection-name>: имя подключения.
  • <workspace-id>: GUID вашей рабочей области OneLake.
  • <storage-credential-name>: имя учетных данных хранилища, созданных на шаге 3.
CREATE CONNECTION <connection-name> TYPE onelake
OPTIONS (
  workspace '<workspace-id>',
  credential '<storage-credential-name>'
);

Шаг 5. Создание внешнего каталога

Внешний каталог связывает определенный элемент данных Fabric с каталогом в каталоге Unity.

Получение идентификатора элемента данных Fabric

  1. На портале Fabric перейдите к целевому Lakehouse либо хранилищу данных.

  2. Скопируйте идентификатор элемента данных, который является GUID (например, f089354e-8366-4e18-aea3-4cb4a3a50b48).

    Этот GUID можно найти в пользовательском интерфейсе Fabric или же скопировать из URL-адреса браузера, перейдя в Lakehouse или Warehouse.

    https://app.fabric.microsoft.com/groups/<workspace-id>/lakehouses/<data-item-id>?experience=power-bi
    

Создание каталога

Обозреватель каталогов
  1. В рабочей области Databricks щелкните значок данных.Каталог.
  2. В верхней части области каталога щелкните значок и выберите "Создать каталог " в меню.
  3. В диалоговом окне "Создание нового каталога " введите имя каталога (например, fabric_sales).
  4. Выберите типиностранного.
  5. Выберите соединение , созданное на шаге 4 (например, onelake_connection).
  6. Для элемента данных введите идентификатор элемента данных, скопированный на портале Fabric.
  7. (Необязательно) Нажмите кнопку "Проверить подключение", чтобы проверить конфигурацию.
  8. Нажмите кнопку Создать.
SQL

Выполните следующую команду SQL в записной книжке или редакторе sql-запросов Databricks. Элементы в квадратных скобках являются необязательными. Замените значения по умолчанию:

  • <catalog-name>: имя каталога в Azure Databricks.
  • <connection-name>: соединение, созданное на шаге 4.
  • <data-item-id>: GUID Fabric Lakehouse или Warehouse.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (
  data_item '<data-item-id>'
);

Можно также указать следующие необязательные параметры:

CREATE FOREIGN CATALOG <catalog-name> USING CONNECTION <connection-name>
OPTIONS (
  data_item '<data-item-id>',
  item_type 'Lakehouse',
  create_volume_for_lakehouse_files 'true'
);

Каталог синхронизируется автоматически, что делает таблицы Fabric доступными немедленно.

Доступ к неструктурированным данным

Федерация OneLake поддерживает доступ только для чтения к неструктурированным данным, хранящимся в папке /Files Lakehouse. Это достигается с помощью разделов каталога Unity.

При создании внешнего каталога с create_volume_for_lakehouse_files, установленным в true (по умолчанию), том автоматически создается в схеме onelake-folders. Этот том указывает на /Files папку Lakehouse и предоставляет доступ только для чтения к файлам, хранящимся там.

Вы можете просматривать и читать файлы с помощью пути тома:

LIST '/Volumes/<catalog-name>/onelake-folders/files/';
df = spark.read.format("binaryFile").load("/Volumes/<catalog-name>/onelake-folders/files/")

Вы также можете запрашивать структурированные файлы напрямую:

SELECT * FROM parquet.`/Volumes/<catalog-name>/onelake-folders/files/table.parquet`

Предоставление разрешений на федеративные таблицы

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

  • Все пользователи должны иметь разрешения USE CATALOG на каталог и USE SCHEMA на схему соответственно.
  • Для чтения из федеративной таблицы пользователям требуется SELECT разрешение.

Дополнительные сведения о привилегиях каталога Unity и их предоставлении см. в разделе "Управление привилегиями" в каталоге Unity.

Запрос данных OneLake

После завершения установки можно найти и запросить данные OneLake в каталоге Unity.

Просмотрите каталог

  1. В рабочей области Databricks перейдите в обозреватель каталогов.
  2. Найдите созданный каталог (например, fabric_sales).
  3. Разверните каталог, чтобы просмотреть синхронизированные схемы и таблицы из Fabric Lakehouse или Warehouse.

Выполнение запросов

Используйте соглашение об именовании трех частей (catalog.schema.table) в Databricks SQL или записных книжках:

SELECT COUNT(*)
FROM fabric_sales.silver.customer_details;
SELECT
  customer_id,
  customer_name,
  total_purchases
FROM fabric_sales.silver.customer_details
WHERE total_purchases > 1000
ORDER BY total_purchases DESC
LIMIT 10;

Ограничения

Федерация OneLake имеет следующие ограничения:

  • Доступ только для чтения: поддерживаются только SELECT запросы. Операции записи недоступны.
  • Проверка подлинности. Управляемое удостоверение Azure и субъект-служба Azure — это поддерживаемые методы проверки подлинности.
  • Поддерживаемые элементы данных: поддерживаются только элементы Fabric Lakehouse и Warehouse.
  • Требования к вычислениям: режим выделенного доступа не поддерживается.
  • Сложные типы данных (массивы, карты, структуры) не поддерживаются.
  • Материализованные представления и представления не поддерживаются.