Udostępnij przez


Integrowanie usługi OneLake z usługą Azure Databricks

W tym scenariuszu pokazano, jak nawiązać połączenie z usługą OneLake za pośrednictwem usługi Azure Databricks. Po ukończeniu tego samouczka będziesz mieć możliwość czytania i zapisywania danych do Microsoft Fabric lakehouse bezpośrednio z obszaru roboczego Azure Databricks.

Wymagania wstępne

Przed nawiązaniem połączenia musisz mieć następujące elementy:

  • Obszar roboczy Fabric i architektura lakehouse.
  • Obszar roboczy usługi Azure Databricks w warstwie Premium. Tylko obszary robocze Azure Databricks w warstwie Premium obsługują przekazywanie poświadczeń Microsoft Entra, co jest niezbędne w tym scenariuszu.

Konfigurowanie obszaru roboczego usługi Databricks

  1. Otwórz obszar roboczy usługi Azure Databricks i wybierz pozycję Utwórz>klaster.

  2. Aby uwierzytelnić się w OneLake przy użyciu tożsamości Microsoft Entra, musisz włączyć opcję przekazywania poświadczeń Azure Data Lake Storage (ADLS) w klastrze w opcjach zaawansowanych.

    Zrzut ekranu przedstawiający miejsce wybrania pozycji Utwórz klaster na ekranie Opcje zaawansowane.

    Uwaga / Notatka

    Możesz również połączyć usługę Databricks z usługą OneLake przy użyciu głównego konta usługi. Aby uzyskać więcej informacji na temat uwierzytelniania usługi Azure Databricks przy użyciu jednostki usługi, zobacz Zarządzanie jednostkami usługi.

  3. Utwórz klaster z preferowanymi parametrami. Aby uzyskać więcej informacji na temat tworzenia klastra usługi Databricks, zobacz Konfigurowanie klastrów — Azure Databricks.

  4. Otwórz notes i połącz go z nowo utworzonym klastrem.

Tworzenie notesu

  1. Przejdź do lakehouse Fabric i skopiuj ścieżkę Azure Blob Filesystem (ABFS) do swojego lakehouse. Można go znaleźć w okienku Właściwości .

    Uwaga / Notatka

    Usługa Azure Databricks obsługuje tylko sterownik Azure Blob Filesystem (ABFS) podczas odczytywania i zapisywania w systemach ADLS Gen2 i OneLake: abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/.

  2. Zapisz ścieżkę do swojego lakehouse w notebooku Databricks. W tym lakehouse zapisujesz przetworzone dane później:

    oneLakePath = 'abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/myLakehouse.lakehouse/Files/'
    
  3. Ładowanie danych z publicznego zestawu danych usługi Databricks do ramki danych. Możesz również odczytać plik z innego miejsca w sieci szkieletowej lub wybrać plik z innego konta usługi ADLS Gen2, którego już jesteś właścicielem.

    yellowTaxiDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/databricks-datasets/nyctaxi/tripdata/yellow/yellow_tripdata_2019-12.csv.gz")
    
  4. Filtrowanie, przekształcanie lub przygotowywanie danych. W tym scenariuszu możesz przyciąć zestaw danych w celu szybszego ładowania, dołączania do innych zestawów danych lub filtrowania do określonych wyników.

    filteredTaxiDF = yellowTaxiDF.where(yellowTaxiDF.fare_amount<4).where(yellowTaxiDF.passenger_count==4)
    display(filteredTaxiDF)
    
  5. Zapisz przefiltrowaną ramkę danych do Fabric lakehouse przy użyciu ścieżki OneLake.

    filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)
    
  6. Przetestuj, czy dane zostały pomyślnie zapisane, odczytując nowo załadowany plik.

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

Spowoduje to ukończenie konfiguracji, a teraz możesz odczytywać i zapisywać dane w usłudze Fabric przy użyciu usługi Azure Databricks.

Nawiązywanie połączenia z usługą OneLake przy użyciu bezserwerowych obliczeń usługi Databricks

Bezserwerowe obliczenia w Databricks umożliwiają uruchamianie obciążeń bez aprowizacji klastra. Zgodnie z dokumentacją bezserwerową usługi Databricks w celu zautomatyzowania konfiguracji platformy Spark na bezserwerowych obliczeniach usługa Databricks nie zezwala na konfigurowanie właściwości platformy Spark poza obsługiwanymi właściwościami wymienionymi tutaj.

Uwaga / Notatka

To ograniczenie nie jest unikatowe dla usługi Azure Databricks. Implementacje bezserwerowe usługi Databricks w usługach Amazon Web Services (AWS) i Google Cloud wykazują takie samo zachowanie.

Jeśli spróbujesz zmodyfikować lub ustawić nieobsługiwaną konfigurację platformy Spark w notesie połączonym z obliczeniami bezserwerowymi usługi Databricks, system zwróci błąd CONFIG_NOT_AVAILABLE.

Zrzut ekranu przedstawiający komunikat o błędzie, jeśli użytkownik próbuje zmodyfikować nieobsługiwaną konfigurację platformy Spark w bezserwerowych obliczeniach.

Usługa OneLake obsługuje łączność przychodzącą z bezserwerowych obliczeń usługi Databricks. Możesz nawiązać połączenie z usługą OneLake (z zasobów obliczeniowych bezserwerowych usługi Databricks) pod warunkiem, że masz odpowiedni dostęp i istnieje ścieżka sieciowa między bezserwerowymi obliczeniami usługi Databricks i usługą OneLake. W przypadku bezserwerowej usługi Databricks należy upewnić się, że kod nie modyfikuje żadnych nieobsługiwanych właściwości platformy Spark.

Wymagania wstępne

Przed nawiązaniem połączenia musisz mieć następujące elementy:

  • Obszar roboczy Fabric i architektura lakehouse.
  • Obszar roboczy usługi Azure Databricks w warstwie Premium.
  • Jednostka usługi z minimalnym przypisaniem roli Współautor obszaru roboczego.
  • Tajemnice bazy danych lub usługa Azure Key Vault (AKV) do przechowywania i pobierania tajemnic. W tym przykładzie użyto sekretów Databricks.

Tworzenie notesu

  1. Utwórz notes w obszarze roboczym usługi Databricks i dołącz go do bezserwerowych zasobów obliczeniowych.

    Zrzut ekranu przedstawiający, jak połączyć notatnik Databricks z bezserwerowymi obliczeniami.

  2. Zaimportuj moduły języka Python — w tym przykładzie używasz trzech modułów:

    • msal to biblioteka Microsoft Authentication Library (MSAL) i została zaprojektowana w celu ułatwienia deweloperom integracji uwierzytelniania platformy tożsamości firmy Microsoft z aplikacjami.
    • moduł requests służy do tworzenia żądań HTTP przy użyciu języka Python.
    • usługa delta lake służy do odczytywania i zapisywania tabel usługi Delta Lake przy użyciu języka Python.
    from msal import ConfidentialClientApplication
    import requests
    from deltalake import DeltaTable
    
  3. Zadeklaruj zmienne dla instancji Microsoft Entra, w tym identyfikator aplikacji. Użyj identyfikatora dzierżawy w dzierżawie, w której wdrożono 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. Zadeklaruj zmienne obszaru roboczego 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. Zainicjuj klienta, aby uzyskać 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. Odczytywanie tabeli różnicowej z usługi OneLake

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

    Uwaga / Notatka

    Podmiot usługi ma przypisanie roli obszaru roboczego Współautor i można go użyć do ponownego zapisywania danych w OneLake.

Spowoduje to ukończenie konfiguracji i można teraz odczytywać dane z usługi OneLake przy użyciu notebooka Databricks podłączonego do obliczeń bezserwerowych.