Udostępnij za pośrednictwem


Łącznik spark dla usługi Microsoft Fabric Synapse Data Warehouse

Łącznik Spark dla usługi Synapse 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 danymi. Łą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

Odczytywanie danych w tym samym obszarze roboczym

Ważne

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

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

import org.apache.spark.sql.functions._

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

val 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:

val 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:

val 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:

val 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 lakehouse. Ten wiersz zawiera przykład odczytywania danych z tabeli lub widoku w ramce danych Spark z magazynu lub lakehouse z określonego identyfikatora obszaru roboczego:

import com.microsoft.spark.fabric.Constants
val df = spark.read.option(Constants.WorkspaceId, "<workspace id>").synapsesql("<warehouse/lakehouse 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.

Używanie zmaterializowanych danych w komórkach i językach

Interfejs API ramki danych platformy createOrReplaceTempView Spark umożliwia dostęp do danych pobranych w jednej komórce lub w języku Scala (po zarejestrowaniu go jako widoku tymczasowego) przez inną komórkę w usłudze Spark SQL lub PySpark. Te wiersze kodu stanowią przykład odczytywania danych z tabeli lub widoku w ramce danych Platformy Spark w języku Scala i używania tych danych w usługach Spark SQL i PySpark:

%%spark
spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").createOrReplaceTempView("<Temporary View Name>")

Teraz zmień preferencję języka w notesie lub na poziomie komórki na Spark SQL i pobierz dane z zarejestrowanego widoku tymczasowego:

%%sql
SELECT * FROM <Temporary View Name> LIMIT 100

Następnie zmień preferencję języka w notesie lub na poziomie komórki na PySpark (Python) i pobierz dane z zarejestrowanego widoku tymczasowego:

%%pyspark
df = spark.read.table("<Temporary View Name>")

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 w języku Scala i używają ich do tworzenia tabeli typu lakehouse:

val 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.
  • Obsługuje tylko język Scala.
  • Nie obsługuje zapytań niestandardowych ani przekazywania zapytań.
  • Nie implementuje optymalizacji wypychanej.
  • 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.