Compartilhar via


Integrar o OneLake ao Azure Databricks

Este cenário mostra como se conectar ao OneLake por meio do Azure Databricks. Depois de concluir este tutorial, você poderá ler e gravar em um lakehouse do Microsoft Fabric a partir do seu workspace do Azure Databricks.

Pré-requisitos

Antes de se conectar, você deve ter:

  • Um espaço de trabalho do Fabric e um "lakehouse".
  • Um workspace premium do Azure Databricks. Somente workspaces premium do Azure Databricks dão suporte ao repasse de credenciais do Microsoft Entra, que você precisa para esse cenário.

Configurar seu workspace do Databricks

  1. Abra o workspace do Azure Databricks e selecione Criar>Cluster.

  2. Para autenticar no OneLake com sua identidade do Microsoft Entra, você deve habilitar a passagem de credencial do AdLS (Azure Data Lake Storage) em seu cluster nas Opções Avançadas.

    Captura de tela mostrando onde selecionar Criar cluster na tela Opções Avançadas.

    Observação

    Você também pode conectar o Databricks ao OneLake usando um service principal. Para obter mais informações sobre como autenticar o Azure Databricks usando uma entidade de serviço, consulte Gerenciar entidades de serviço.

  3. Crie o cluster com seus parâmetros preferenciais. Para obter mais informações sobre como criar um cluster do Databricks, consulte Configurar clusters – Azure Databricks.

  4. Abra um bloco de anotações e conecte-o ao cluster recém-criado.

Elabore seu bloco de anotações

  1. Navegue até seu lakehouse do Fabric e copie o caminho do Sistema de Arquivos de Blobs do Azure (ABFS) para o seu lakehouse. Você pode encontrá-lo no painel Propriedades .

    Observação

    O Azure Databricks só dá suporte ao driver do ABFS (Azure Blob Filesystem) ao ler e gravar no ADLS Gen2 e no OneLake: abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/.

  2. Salve o caminho para o lakehouse no bloco de anotações do Databricks. Este lakehouse é onde você escreve seus dados processados mais tarde:

    oneLakePath = 'abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/myLakehouse.lakehouse/Files/'
    
  3. Carregue dados de um conjunto de dados público do Databricks em um dataframe. Você também pode ler um arquivo de outro lugar no Fabric ou escolher um arquivo de outra conta do ADLS Gen2 que você já possui.

    yellowTaxiDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/databricks-datasets/nyctaxi/tripdata/yellow/yellow_tripdata_2019-12.csv.gz")
    
  4. Filtrar, transformar ou preparar seus dados. Para esse cenário, você pode reduzir o conjunto de dados para carregamento mais rápido, unir-se a outros conjuntos de dados ou filtrar para resultados específicos.

    filteredTaxiDF = yellowTaxiDF.where(yellowTaxiDF.fare_amount<4).where(yellowTaxiDF.passenger_count==4)
    display(filteredTaxiDF)
    
  5. Escreva seu dataframe filtrado no lakehouse do Fabric usando o caminho do OneLake.

    filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)
    
  6. Teste se seus dados foram gravados com êxito lendo seu arquivo recém-carregado.

    lakehouseRead = spark.read.format('csv').option("header", "true").load(oneLakePath)
    display(lakehouseRead.limit(10))
    

Isso conclui a instalação e agora você pode ler e gravar dados no Fabric usando o Azure Databricks.

Conectando-se ao OneLake usando a computação sem servidor do Databricks

A computação sem servidor do Databricks permite que você execute cargas de trabalho sem provisionar um cluster. De acordo com a documentação sem servidor do Databricks, para automatizar a configuração do Spark na computação sem servidor, o Databricks sem servidor não permite configurar propriedades do Spark fora das propriedades com suporte listadas aqui.

Observação

Essa limitação não é exclusiva do Azure Databricks. As implementações sem servidor do Databricks no Amazon Web Services (AWS) e no Google Cloud exibem o mesmo comportamento.

Se você tentar modificar ou definir uma configuração spark sem suporte em um notebook vinculado à computação sem servidor do Databricks, o sistema retornará um erro CONFIG_NOT_AVAILABLE.

Captura de tela mostrando a mensagem de erro se um usuário tentar modificar a configuração spark sem suporte na computação sem servidor.

O OneLake dá suporte à conectividade de entrada da computação sem servidor do Databricks. Você pode se conectar ao OneLake (da computação sem servidor do Databricks), desde que tenha acesso apropriado e haja um caminho de rede entre a computação sem servidor do Databricks e o OneLake. Com o Databricks sem servidor, você deve garantir que seu código não modifique nenhuma propriedade spark sem suporte.

Pré-requisitos

Antes de se conectar, você deve ter:

  • Um espaço de trabalho do Fabric e um "lakehouse".
  • Um workspace premium do Azure Databricks.
  • Uma entidade de serviço com, no mínimo, a atribuição da função de Colaborador no workspace.
  • Segredos do banco de dados ou AKV (Azure Key Vault) para armazenar e recuperar segredos. Este exemplo usa segredos do Databricks.

Elabore seu bloco de anotações

  1. Crie um notebook no workspace do Databricks e anexe-o à computação sem servidor.

    Captura de tela mostrando como conectar o bloco de anotações do Databricks com a computação sem servidor.

  2. Importar módulos do Python – neste exemplo, você está usando três módulos:

    • Msal é a MSAL (Biblioteca de Autenticação da Microsoft) e foi projetada para ajudar os desenvolvedores a integrar a autenticação da plataforma de identidade da Microsoft em seus aplicativos.
    • O módulo de solicitações é usado para fazer solicitações HTTP usando Python.
    • delta lake é usado para ler e gravar tabelas delta lake usando Python.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Declare variáveis para o locatário do Microsoft Entra, incluindo a ID do aplicativo. Use a ID do locatário em que o Microsoft Fabric está implantado.

    # 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. Declare variáveis de workspace do 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. Inicialize o cliente para adquirir o 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. Ler uma tabela delta do OneLake

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

    Observação

    A entidade de serviço tem atribuição de função de colaborador do workspace Contributor e você pode usá-la para gravar dados de volta no OneLake.

Isso conclui a instalação e agora você pode ler dados do OneLake usando o Databricks um notebook anexado à computação sem servidor.