Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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
Otwórz obszar roboczy usługi Azure Databricks i wybierz pozycję Utwórz>klaster.
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.
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.
Utwórz klaster z preferowanymi parametrami. Aby uzyskać więcej informacji na temat tworzenia klastra usługi Databricks, zobacz Konfigurowanie klastrów — Azure Databricks.
Otwórz notes i połącz go z nowo utworzonym klastrem.
Tworzenie notesu
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/.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/'Ł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")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)Zapisz przefiltrowaną ramkę danych do Fabric lakehouse przy użyciu ścieżki OneLake.
filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)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.
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
Utwórz notes w obszarze roboczym usługi Databricks i dołącz go do bezserwerowych zasobów obliczeniowych.
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 DeltaTableZadeklaruj 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>")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}"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']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.