Udostępnij za pośrednictwem


Łącznik Platformy Spark dla magazynu danych usługi Microsoft Fabric

Łącznik Spark dla usługi Fabric Data Warehouse umożliwia deweloperom platformy Spark i analitykom danych uzyskiwanie dostępu do danych z magazynu i punktu końcowego analizy SQL w usłudze Lakehouse oraz pracę z nimi. Łącznik oferuje następujące możliwości:

  • Możesz pracować z danymi z magazynu lub punktu końcowego analizy SQL w tym samym obszarze roboczym lub w wielu obszarach roboczych.
  • Punkt końcowy analizy SQL usługi Lakehouse jest automatycznie wykrywany na podstawie kontekstu obszaru roboczego.
  • Łącznik ma uproszczony interfejs API platformy Spark, abstrahuje podstawową złożoność i działa przy użyciu tylko jednego wiersza kodu.
  • Podczas uzyskiwania dostępu do tabeli lub widoku łącznik podtrzymuje modele zabezpieczeń zdefiniowane na poziomie aparatu SQL. Te modele obejmują zabezpieczenia na poziomie obiektu (OLS), zabezpieczenia na poziomie wiersza (RLS) i zabezpieczenia na poziomie kolumny (CLS).
  • Łącznik jest wstępnie zainstalowany w środowisku uruchomieniowym sieci szkieletowej, co eliminuje konieczność oddzielnej instalacji.

Uwaga

Łącznik jest obecnie w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz bieżące ograniczenia w dalszej części tego artykułu.

Uwierzytelnianie

Uwierzytelnianie entra firmy Microsoft to zintegrowane podejście do uwierzytelniania. Użytkownicy logują się do obszaru roboczego usługi Microsoft Fabric, a ich poświadczenia są automatycznie przekazywane do aparatu SQL na potrzeby uwierzytelniania i autoryzacji. Poświadczenia są automatycznie mapowane, a użytkownicy nie muszą udostępniać określonych opcji konfiguracji.

Uprawnienia

Aby nawiązać połączenie z aparatem SQL, użytkownicy muszą mieć co najmniej uprawnienie odczyt (podobne do uprawnień CONNECT w programie SQL Server) w magazynie lub punkcie końcowym analizy SQL (poziom elementu). Użytkownicy potrzebują również szczegółowych uprawnień na poziomie obiektu, aby odczytywać dane z określonych tabel lub widoków. Aby dowiedzieć się więcej, zobacz Zabezpieczenia magazynowania danych w usłudze Microsoft Fabric.

Szablony kodu i przykłady

Używanie sygnatury metody

Następujące polecenie przedstawia sygnaturę synapsesql metody dla żądania odczytu. Trzyczęściowy tableName argument jest wymagany do uzyskiwania dostępu do tabel lub widoków z magazynu i punktu końcowego analizy SQL typu lakehouse. Zaktualizuj argument przy użyciu następujących nazw w zależności od scenariusza:

  • Część 1. Nazwa magazynu lub jeziora.
  • Część 2. Nazwa schematu.
  • Część 3. Nazwa tabeli lub widoku.
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame

Oprócz bezpośredniego odczytywania z tabeli lub widoku ten łącznik umożliwia również określenie zapytania niestandardowego lub przekazywanego, które jest przekazywane do aparatu SQL, a wynik jest zwracany z powrotem do platformy Spark.

spark.read.option(Constants.DatabaseName, "<warehouse/lakeshouse name>").synapsesql("<T-SQL Query>") => org.apache.spark.sql.DataFrame

Chociaż ten łącznik automatycznie odnajduje punkt końcowy dla określonego magazynu/magazynu typu lakehouse, jeśli chcesz go jawnie określić, możesz to zrobić.

//For warehouse
spark.conf.set("spark.datawarehouse.<warehouse name>.sqlendpoint", "<sql endpoint,port>")
//For lakehouse
spark.conf.set("spark.lakehouse.<lakeshouse name>.sqlendpoint", "<sql endpoint,port>")
//Read from table
spark.read.synapsesql("<warehouse/lakeshouse name>.<schema name>.<table or view name>") 

Odczytywanie danych w tym samym obszarze roboczym

Ważne

Uruchom te instrukcje importowania na początku notesu lub przed rozpoczęciem korzystania z łącznika:

Dla języka Scala

import com.microsoft.spark.fabric.tds.implicits.read.FabricSparkTDSImplicits._

import com.microsoft.spark.fabric.Constants

Dla PySpark (Python)

import com.microsoft.spark.fabric

from com.microsoft.spark.fabric.Constants import Constants

Poniższy kod to przykład odczytu danych z tabeli lub widoku w ramce danych platformy Spark:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")

Poniższy kod to przykład odczytu danych z tabeli lub widoku w ramce danych platformy Spark z limitem liczby wierszy 10:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").limit(10)

Poniższy kod to przykład odczytu danych z tabeli lub widoku w ramce danych platformy Spark po zastosowaniu filtru:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").filter("column name == 'value'")

Poniższy kod to przykład odczytu danych z tabeli lub widoku w ramce danych platformy Spark tylko dla wybranych kolumn:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").select("column A", "Column B")

Odczytywanie danych między obszarami roboczymi

Aby uzyskać dostęp do danych z magazynu lub magazynu lakehouse w różnych obszarach roboczych i odczytywać je, możesz określić identyfikator obszaru roboczego, w którym istnieje magazyn lub magazyn, a następnie identyfikator elementu lakehouse lub warehouse. Poniższy wiersz zawiera przykład odczytywania danych z tabeli lub widoku w ramce danych Platformy Spark z magazynu lub lakehouse z określonym identyfikatorem obszaru roboczego i identyfikatorem lakehouse/warehouse:

# For lakehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.LakehouseId, "<lakehouse item id>").synapsesql("<lakehouse name>.<schema name>.<table or view name>")

# For warehouse
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")
df = spark.read.option(Constants.WorkspaceId, "<workspace id>").option(Constants.DatawarehouseId, "<warehouse item id>").synapsesql("<warehouse name>.<schema name>.<table or view name>")

Uwaga

Po uruchomieniu notesu łącznik domyślnie wyszukuje określony magazyn lub magazyn typu lakehouse w obszarze roboczym usługi Lakehouse dołączonym do notesu. Aby odwołać się do magazynu lub magazynu lakehouse z innego obszaru roboczego, określ identyfikator obszaru roboczego i identyfikator elementu lakehouse lub warehouse, jak pokazano powyżej.

Tworzenie tabeli lakehouse na podstawie danych z magazynu

Te wiersze kodu stanowią przykład odczytu danych z tabeli lub widoku w ramce danych platformy Spark i używają ich do tworzenia tabeli typu lakehouse:

df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
df.write.format("delta").saveAsTable("<Lakehouse table name>")

Rozwiązywanie problemów

Po zakończeniu fragment odpowiedzi odczytu jest wyświetlany w danych wyjściowych komórki. Błąd w bieżącej komórce anuluje również kolejne wykonania komórek notesu. Szczegółowe informacje o błędzie są dostępne w dziennikach aplikacji platformy Spark.

Bieżące ograniczenia

Obecnie łącznik:

  • Obsługuje pobieranie danych z magazynów sieci szkieletowej i punktów końcowych analizy SQL elementów typu lakehouse.
  • Usługa Fabric DW obsługuje Time Travel teraz jednak ten łącznik nie działa w przypadku zapytania ze składnią podróży w czasie.
  • Zachowuje sygnaturę użycia, taką jak ta dostarczana z platformą Apache Spark dla usługi Azure Synapse Analytics w celu zapewnienia spójności. Jednak nie jest to zgodne z poprzednimi wersjami, aby nawiązać połączenie i pracować z dedykowaną pulą SQL w usłudze Azure Synapse Analytics.
  • Nazwy kolumn ze znakami specjalnymi będą obsługiwane przez dodanie znaku ucieczki przed wysłaniem zapytania na podstawie 3 części nazwy tabeli/widoku. W przypadku odczytu opartego na zapytaniach niestandardowych lub passthrough użytkownicy są zobowiązani do ucieczki nazw kolumn, które zawierają znaki specjalne.