Поделиться через


Интеграция OneLake с Azure Databricks

В этой статье показано, как подключиться к OneLake с помощью бессерверных вычислений Azure Databricks.

Предпосылки

Перед подключением убедитесь, что у вас есть:

  • Рабочая область Fabric и озерохранилище.
  • Рабочая область Azure Databricks уровня "Премиум".
  • Служебный принципал с назначением роли рабочей области "Участник" по крайней мере.
  • Секреты баз данных или хранилище ключей Azure Key Vault (AKV) для сохранения и извлечения секретов. В этом примере используются секреты Databricks.

Подключение к OneLake с помощью бессерверных вычислений Databricks

С помощью Databricks Serverless Compute можно запускать рабочие нагрузки без предварительного создания кластера. Согласно документации о бессерверной архитектуре Databricks, для автоматизации настройки Spark в бессерверных вычислениях, Databricks разрешает конфигурировать только подмножество поддерживаемых свойств Spark.

Замечание

Это ограничение не является уникальным для Azure Databricks. Реализации без сервера Databricks в Amazon Web Services (AWS) и Google Cloud демонстрируют то же поведение.

Если вы пытаетесь изменить или задать неподдерживаемую конфигурацию Spark в записной книжке, связанной с бессерверными вычислениями Databricks, система возвращает ошибку CONFIG_NOT_AVAILABLE.

Снимок экрана: сообщение об ошибке, если пользователь пытается изменить неподдерживаемую конфигурацию Spark в бессерверных вычислениях.

OneLake поддерживает входящие подключения из бессерверных вычислений Databricks. Вы можете подключиться к OneLake из бессерверных вычислений Databricks, если у вас есть соответствующий доступ и существует сетевой путь между бессерверными вычислениями Databricks и OneLake. При использовании Бессерверного Databricks убедитесь, что код не изменяет неподдерживаемые свойства Spark.

Создание записной книжки

  1. Создайте записную книжку в рабочей области Databricks и подключите ее к бессерверным вычислениям.

    Снимок экрана, показывающий, как подключить записную книжку Databricks к бессерверным вычислениям.

  2. Импорт модулей Python в этом примере используйте три модуля:

    • msal — это библиотека проверки подлинности Майкрософт (MSAL), и она предназначена для того, чтобы разработчики интегрирули проверку подлинности платформы удостоверений Майкрософт в свои приложения.
    • Модуль запросов используется для выполнения HTTP-запросов с помощью Python.
    • delta lake используется для чтения и записи таблиц Delta Lake с помощью Python.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Объявите переменные для клиента Microsoft Entra, включая идентификатор приложения. Используйте идентификатор клиента, в котором развернута Microsoft Fabric.

    # Fetch from Databricks secrets.
    tenant_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for tenant _id>")
    client_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for client _id>") 
    client_secret = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for secret>")
    
  4. Объявите переменные рабочей области Fabric.

    workspace_id = "<replace with workspace name>"
    lakehouse_id = "<replace with lakehouse name>"
    table_to_read = "<name of lakehouse table to read>"
    storage_account_name = workspace_id
    onelake_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/{table_to_read}"
    
  5. Инициализируют клиента для получения токена.

    authority = f"https://login.microsoftonline.com/{tenant_id}"
    
    app = ConfidentialClientApplication(
     client_id,
     authority=authority,
     client_credential=client_secret
     )
    
     result = app.acquire_token_for_client(scopes=["https://onelake.fabric.microsoft.com/.default"])
    
     if "access_token" in result:
       access_token = result["access_token"]
       print("Access token acquired.")
       token_val = result['access_token']
    
  6. Чтение разностной таблицы из OneLake

    dt = DeltaTable(onelake_uri, storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"})
    df = dt.to_pandas()
    print(df.head())
    

    Замечание

    Рабочая сущность имеет назначение роли Contributor в рабочей области, и её можно использовать для записи данных обратно в OneLake.

Выполнив описанные выше действия, вы можете считывать данные из OneLake с помощью Databricks записной книжки, подключенной к бессерверным вычислениям.