Łą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.