Compartir a través de


Integración de OneLake con Azure Databricks

En este artículo se muestra cómo conectarse a OneLake mediante la computación sin servidor de Azure Databricks.

Prerrequisitos

Antes de conectarse, asegúrese de que tiene:

  • Un área de trabajo de Fabric y lakehouse.
  • Un área de trabajo premium de Azure Databricks.
  • Una entidad de servicio con al menos el rol asignado en el área de trabajo Colaborador.
  • Secretos de base de datos o Azure Key Vault (AKV) para almacenar y recuperar secretos. En este ejemplo se usan secretos de Databricks.

Conectarse a OneLake mediante el cómputo sin servidor de Databricks

Al utilizar el cómputo sin servidor de Databricks, puede ejecutar cargas de trabajo sin aprovisionar un clúster. Según la documentación sin servidor de Databricks, para automatizar la configuración de Spark en un proceso sin servidor, Databricks sin servidor solo permite configurar un subconjunto de propiedades de Spark admitidas.

Nota:

Esta limitación no es exclusiva de Azure Databricks. Las implementaciones sin servidor de Databricks en Amazon Web Services (AWS) y Google Cloud muestran el mismo comportamiento.

Si intenta modificar o establecer una configuración de Spark no compatible en un cuaderno vinculado a un proceso sin servidor de Databricks, el sistema devuelve un error de CONFIG_NOT_AVAILABLE.

Captura de pantalla que muestra el mensaje de error si un usuario intenta modificar la configuración de Spark no admitida en proceso sin servidor.

OneLake admite la conectividad de entrada desde la computación sin servidor de Databricks. Puede conectarse a OneLake desde el proceso sin servidor de Databricks si tiene acceso adecuado y hay una ruta de acceso de red entre el proceso sin servidor de Databricks y OneLake. Con Databricks sin servidor, asegúrese de que el código no modifica las propiedades de Spark no admitidas.

Escribe tu cuaderno

  1. Cree un notebook en el área de trabajo de Databricks y conéctelo a computación sin servidor.

    Captura de pantalla que muestra cómo conectar el cuaderno de Databricks con proceso sin servidor.

  2. Importación de módulos de Python: en este ejemplo, use tres módulos:

    • msal es la Biblioteca de autenticación de Microsoft (MSAL) y está diseñada para ayudar a los desarrolladores a integrar la autenticación de la plataforma de identidad de Microsoft en sus aplicaciones.
    • El módulo requests se usa para realizar solicitudes HTTP mediante Python.
    • Delta Lake se usa para leer y escribir tablas de Delta Lake mediante Python.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Declarar variables para la instancia de Microsoft Entra que incluye el identificador de la aplicación. Use el identificador de inquilino del inquilino donde se implementa 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. Declarar variables de área de trabajo de 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. Inicialice el cliente para adquirir el token.

    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. Leer una tabla delta de OneLake

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

    Nota:

    La entidad de servicio tiene la asignación de roles del área de trabajo Colaborador y puede usarla para volver a escribir datos en OneLake.

Después de completar los pasos anteriores, puede leer datos de OneLake mediante Databricks, un cuaderno conectado al cómputo sin servidor.