Delen via


OneLake integreren met Azure Databricks

In dit scenario ziet u hoe u via Azure Databricks verbinding maakt met OneLake. Nadat u deze zelfstudie hebt voltooid, kunt u vanuit uw Azure Databricks-werkruimte lezen en schrijven naar een Microsoft Fabric Lakehouse.

Vereiste voorwaarden

Voordat u verbinding maakt, moet u het volgende hebben:

  • Een Fabric-werkruimte en Lakehouse.
  • Een premium Azure Databricks-werkruimte. Alleen premium Azure Databricks-werkruimten, die u nodig hebt voor dit scenario, ondersteunen Microsoft Entra-referentie-Passthrough.

Uw Databricks-werkruimte instellen

  1. Open uw Azure Databricks-werkruimte en selecteer Cluster maken>.

  2. Als u zich wilt verifiëren bij OneLake met uw Microsoft Entra-identiteit, moet u passthrough voor Azure Data Lake Storage-referenties (ADLS) inschakelen op uw cluster in de geavanceerde opties.

    Schermopname die laat zien waar u Cluster maken selecteert in het scherm Geavanceerde opties.

    Opmerking

    U kunt Databricks ook verbinden met OneLake met behulp van een service-principal. Zie Service-principals beheren voor meer informatie over het verifiëren van Azure Databricks met behulp van een service-principal.

  3. Maak het cluster met de gewenste parameters. Zie Clusters configureren - Azure Databricks voor meer informatie over het maken van een Databricks-cluster.

  4. Open een notebook en verbind het met uw zojuist gemaakte cluster.

Uw notitieblok ontwerpen

  1. Navigeer naar uw Fabric Lakehouse en kopieer het ABFS-pad (Azure Blob FileSystem) naar uw lakehouse. U vindt deze in het deelvenster Eigenschappen .

    Opmerking

    Azure Databricks ondersteunt alleen het ABFS-stuurprogramma (Azure Blob FileSystem) bij het lezen en schrijven naar ADLS Gen2 en OneLake: abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/.

  2. Sla het pad op naar uw lakehouse in uw Databricks-notebook. In dit lakehouse zult u later uw verwerkte gegevens opslaan.

    oneLakePath = 'abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/myLakehouse.lakehouse/Files/'
    
  3. Laad gegevens uit een openbare Databricks-gegevensset in een dataframe. U kunt ook een bestand van elders in Fabric lezen of een bestand kiezen uit een ander ADLS Gen2-account dat u al hebt.

    yellowTaxiDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/databricks-datasets/nyctaxi/tripdata/yellow/yellow_tripdata_2019-12.csv.gz")
    
  4. Uw gegevens filteren, transformeren of voorbereiden. Voor dit scenario kunt u uw gegevensset verkleinen voor sneller laden, samenvoegen met andere gegevenssets of filteren op specifieke resultaten.

    filteredTaxiDF = yellowTaxiDF.where(yellowTaxiDF.fare_amount<4).where(yellowTaxiDF.passenger_count==4)
    display(filteredTaxiDF)
    
  5. Schrijf uw gefilterde dataframe naar uw Fabric-lakehouse via uw OneLake-pad.

    filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)
    
  6. Test of uw gegevens zijn geschreven door het zojuist geladen bestand te lezen.

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

Dit voltooit de installatie en nu kunt u nu gegevens lezen en schrijven in Fabric met behulp van Azure Databricks.

Verbinding maken met OneLake met behulp van serverloze compute van Databricks

Met serverloze compute van Databricks kunt u workloads uitvoeren zonder een cluster in te richten. Volgens de serverloze documentatie van Databricks, voor het automatiseren van de configuratie van Spark op serverloze berekeningen, staat Databricks serverloos het configureren van Spark-eigenschappen buiten ondersteunde eigenschappen die hier worden vermeld, niet toe.

Opmerking

Deze beperking is niet uniek voor Azure Databricks. Serverloze Databricks-implementaties op Amazon Web Services (AWS) en Google Cloud vertonen hetzelfde gedrag.

Als u een niet-ondersteunde Spark-configuratie probeert te wijzigen of in te stellen in een notebook die is gekoppeld aan serverloze Berekening van Databricks, retourneert het systeem een CONFIG_NOT_AVAILABLE fout.

Schermopname van het foutbericht als een gebruiker probeert de niet-ondersteunde Spark-configuratie in serverloze berekeningen te wijzigen.

OneLake biedt ondersteuning voor inkomende connectiviteit vanuit serverless compute van Databricks. U kunt verbinding maken met OneLake (van serverloze compute van Databricks) zolang u de juiste toegang heeft en er een netwerkpad is tussen serverloze compute van Databricks en OneLake. Met Serverloze Databricks moet u ervoor zorgen dat uw code geen niet-ondersteunde Spark-eigenschappen wijzigt.

Vereiste voorwaarden

Voordat u verbinding maakt, moet u het volgende hebben:

  • Een Fabric-werkruimte en Lakehouse.
  • Een premium Azure Databricks-werkruimte.
  • Een service-principal met minimaal de roltoewijzing Inzender-werkruimte .
  • Databasegeheimen of Azure Key Vault (AKV) voor het opslaan en opvragen van geheimen. In dit voorbeeld worden Databricks-geheimen gebruikt.

Uw notitieblok ontwerpen

  1. Maak een notebook in de Databricks-werkruimte en koppel dit aan serverloze berekeningen.

    Schermopname die laat zien hoe u een Databricks-notebook verbindt met serverloze berekeningen.

  2. Python-modules importeren: in dit voorbeeld gebruikt u drie modules:

    • msal is Microsoft Authentication Library (MSAL) en is ontworpen om ontwikkelaars te helpen bij het integreren van Microsoft Identity Platform-verificatie in hun toepassingen.
    • aanvraagmodule wordt gebruikt om HTTP-aanvragen te maken met behulp van Python.
    • Delta Lake wordt gebruikt voor het lezen en schrijven van Delta Lake-tabellen met behulp van Python.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Declareer variabelen voor Microsoft Entra-tenant, inclusief toepassings-id. Gebruik de tenant-id van de tenant waar Microsoft Fabric is geïmplementeerd.

    # 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. Declareer werkruimtevariabelen voor 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. Initialiseer de client om een token te verkrijgen.

    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. Een deltatabel lezen uit OneLake

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

    Opmerking

    De service-principal heeft de werkruimte-roltoewijzing Bijdrager en u kunt deze gebruiken om gegevens naar OneLake terug te schrijven.

Dit voltooit de installatie en u kunt nu gegevens uit OneLake lezen met behulp van Databricks een notebook dat is gekoppeld aan serverloze berekeningen.