Spark-anslutningsprogram för Microsoft Fabric Data Warehouse
Spark-anslutningsappen för Fabric Data Warehouse gör det möjligt för Spark-utvecklare och dataforskare att komma åt och arbeta med data från ett lager och SQL-analysslutpunkten för ett lakehouse. Anslutningsappen har följande funktioner:
- Du kan arbeta med data från ett lager eller en SQL-analysslutpunkt på samma arbetsyta eller över flera arbetsytor.
- SQL-analysslutpunkten för en Lakehouse identifieras automatiskt baserat på arbetsytekontext.
- Anslutningsappen har ett förenklat Spark-API, abstraherar den underliggande komplexiteten och fungerar med bara en kodrad.
- När du använder en tabell eller en vy upprätthåller anslutningsappen säkerhetsmodeller som definierats på SQL-motornivå. Dessa modeller omfattar säkerhet på objektnivå (OLS), säkerhet på radnivå (RLS) och säkerhet på kolumnnivå (CLS).
- Anslutningsappen är förinstallerad i Fabric-körningen, vilket eliminerar behovet av separat installation.
Kommentar
Anslutningsappen är för närvarande i förhandsversion. Mer information finns i de aktuella begränsningarna senare i den här artikeln.
Autentisering
Microsoft Entra-autentisering är en integrerad autentiseringsmetod. Användare loggar in på Microsoft Fabric-arbetsytan och deras autentiseringsuppgifter skickas automatiskt till SQL-motorn för autentisering och auktorisering. Autentiseringsuppgifterna mappas automatiskt och användarna behöver inte ange specifika konfigurationsalternativ.
Behörigheter
För att ansluta till SQL-motorn behöver användarna minst läsbehörighet (ungefär som CONNECT-behörighet i SQL Server) på lager- eller SQL-analysslutpunkten (objektnivå). Användarna behöver också detaljerade behörigheter på objektnivå för att läsa data från specifika tabeller eller vyer. Mer information finns i Säkerhet för datalagerhantering i Microsoft Fabric.
Kodmallar och exempel
Använda en metodsignatur
Följande kommando visar metodsignaturen synapsesql
för läsbegäran. Argumentet i tre delar tableName
krävs för åtkomst till tabeller eller vyer från ett lager och SQL-analysslutpunkten för ett lakehouse. Uppdatera argumentet med följande namn baserat på ditt scenario:
- Del 1: Namn på lager eller sjöhus.
- Del 2: Namnet på schemat.
- Del 3: Namnet på tabellen eller vyn.
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame
Förutom att läsa från en tabell eller vy direkt kan du med den här anslutningsappen även ange en anpassad fråga eller genomströmningsfråga som skickas till SQL-motorn och resultatet returneras tillbaka till Spark.
spark.read.option(Constants.DatabaseName, "<warehouse/lakeshouse name>").synapsesql("<T-SQL Query>") => org.apache.spark.sql.DataFrame
Den här anslutningsappen identifierar automatiskt slutpunkten för det angivna lagret/lakehouse, men om du vill ange den explicit kan du göra det.
//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>")
Läsa data på samma arbetsyta
Viktigt!
Kör dessa importinstruktioner i början av anteckningsboken eller innan du börjar använda anslutningsappen:
För Scala
import com.microsoft.spark.fabric.tds.implicits.read.FabricSparkTDSImplicits._
import com.microsoft.spark.fabric.Constants
För PySpark (Python)
import com.microsoft.spark.fabric
from com.microsoft.spark.fabric.Constants import Constants
Följande kod är ett exempel för att läsa data från en tabell eller vy i en Spark DataFrame:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
Följande kod är ett exempel för att läsa data från en tabell eller vy i en Spark DataFrame med en radantalsgräns på 10:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").limit(10)
Följande kod är ett exempel för att läsa data från en tabell eller vy i en Spark DataFrame när du har tillämpat ett filter:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").filter("column name == 'value'")
Följande kod är ett exempel för att läsa data från en tabell eller vy i en Spark DataFrame endast för valda kolumner:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>").select("column A", "Column B")
Läsa data mellan arbetsytor
Om du vill komma åt och läsa data från ett lager eller ett sjöhus mellan arbetsytor kan du ange arbetsyte-ID:t där ditt lager eller lakehouse finns och sedan lakehouse- eller lagerartikel-ID. Följande rad innehåller ett exempel på hur du läser data från en tabell eller vy i en Spark DataFrame från lagret eller lakehouse med angivet arbetsyte-ID och lakehouse-/lager-ID:
# 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>")
Kommentar
När du kör notebook-filen letar anslutningsappen som standard efter det angivna lagret eller lakehouse i arbetsytan för det lakehouse som är kopplat till notebook-filen. Om du vill referera till ett lager eller lakehouse från en annan arbetsyta anger du arbetsytans ID och lakehouse- eller lagerartikel-ID enligt ovan.
Skapa en lakehouse-tabell baserat på data från ett lager
Dessa kodrader är ett exempel för att läsa data från en tabell eller vy i en Spark DataFrame och använda dem för att skapa en lakehouse-tabell:
df = spark.read.synapsesql("<warehouse/lakehouse name>.<schema name>.<table or view name>")
df.write.format("delta").saveAsTable("<Lakehouse table name>")
Felsöka
När du är klar visas det lästa svarsfragmentet i cellens utdata. Fel i den aktuella cellen avbryter också efterföljande cellkörningar av notebook-filen. Detaljerad felinformation finns i Spark-programloggarna.
Aktuella begränsningar
För närvarande anslutningsappen:
- Stöder datahämtning från Infrastrukturlager och SQL-analysslutpunkter för lakehouse-objekt.
- Fabric DW stöder
Time Travel
nu men den här anslutningsappen fungerar inte för en fråga med tidsresesyntax. - Behåller användningssignaturen som den som levereras med Apache Spark för Azure Synapse Analytics för konsekvens. Det är dock inte bakåtkompatibelt att ansluta och arbeta med en dedikerad SQL-pool i Azure Synapse Analytics.
- Kolumnnamn med specialtecken hanteras genom att escape-tecken läggs till innan frågan, baserat på tabell-/vynamnet i 3 delar, skickas. Om en anpassad eller genomströmningsfrågebaserad läsning utförs måste användarna undvika kolumnnamn som skulle innehålla specialtecken.