Del via


Spark-connector til Microsoft Fabric Data Warehouse

Spark-connectoren til Fabric Data Warehouse gør det muligt for Spark-udviklere og dataforskere at få adgang til og arbejde med data fra et lager og SQL Analytics-slutpunktet for et lakehouse. Connectoren indeholder følgende funktioner:

  • Du kan arbejde med data fra et lager- eller SQL Analytics-slutpunkt i det samme arbejdsområde eller på tværs af flere arbejdsområder.
  • SQL Analytics-slutpunktet for en Lakehouse registreres automatisk baseret på arbejdsområdekontekst.
  • Connectoren har en forenklet Spark-API, abstrakterer den underliggende kompleksitet og fungerer med kun én kodelinje.
  • Når du har adgang til en tabel eller en visning, opretholder connectoren sikkerhedsmodeller, der er defineret på SQL-programniveau. Disse modeller omfatter sikkerhed på objektniveau (OLS), sikkerhed på rækkeniveau (RLS) og sikkerhed på kolonneniveau (CLS).
  • Connectoren er forudinstalleret i Fabric-kørslen, hvilket eliminerer behovet for separat installation.

Bemærk

Connectoren er i øjeblikket en prøveversion. Du kan få flere oplysninger i de aktuelle begrænsninger senere i denne artikel.

Godkendelse

Microsoft Entra-godkendelse er en integreret godkendelsesmetode. Brugerne logger på Microsoft Fabric-arbejdsområdet, og deres legitimationsoplysninger overføres automatisk til SQL-programmet til godkendelse og godkendelse. Legitimationsoplysningerne tilknyttes automatisk, og brugerne behøver ikke at angive specifikke konfigurationsindstillinger.

Tilladelser

For at oprette forbindelse til SQL-programmet skal brugerne som minimum have læsetilladelse (svarende til CONNECT-tilladelse i SQL Server) på lageret eller SQL Analytics-slutpunktet (elementniveau). Brugerne skal også have detaljerede tilladelser på objektniveau til at læse data fra bestemte tabeller eller visninger. Du kan få mere at vide under Sikkerhed for datawarehousing i Microsoft Fabric.

Kodeskabeloner og eksempler

Brug en metodesignatur

Følgende kommando viser synapsesql metodesignaturen for læseanmodningen. Argumentet med tre dele tableName er påkrævet for at få adgang til tabeller eller visninger fra et lager og SQL Analytics-slutpunktet for et lakehouse. Opdater argumentet med følgende navne baseret på dit scenarie:

  • Del 1: Navnet på lageret eller lakehouse.
  • Del 2: Skemaets navn.
  • Del 3: Navnet på tabellen eller visningen.
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame

Ud over at læse direkte fra en tabel eller visning giver denne connector dig også mulighed for at angive en brugerdefineret forespørgsel eller en passthrough-forespørgsel, som overføres til SQL-programmet, og resultatet returneres til Spark.

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

Selvom denne connector automatisk registrerer slutpunktet for det angivne lager/lakehouse, kan du gøre det, hvis du vil angive det eksplicit.

//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æs data i det samme arbejdsområde

Vigtigt

Kør disse importsætninger i begyndelsen af notesbogen, eller før du begynder at bruge connectoren:

Til Scala

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

import com.microsoft.spark.fabric.Constants

Til PySpark (Python)

import com.microsoft.spark.fabric

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

Følgende kode er et eksempel på læsning af data fra en tabel eller visning i en Spark DataFrame:

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

Følgende kode er et eksempel på læsning af data fra en tabel eller visning i en Spark DataFrame med en rækkeantalgrænse på 10:

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

Følgende kode er et eksempel på læsning af data fra en tabel eller visning i en Spark DataFrame, når du har anvendt et filter:

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

Følgende kode er et eksempel på læsning af data fra en tabel eller visning i en Spark DataFrame kun for valgte kolonner:

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

Læs data på tværs af arbejdsområder

Hvis du vil have adgang til og læse data fra et lager eller et lakehouse på tværs af arbejdsområder, kan du angive arbejdsområde-id'et, hvor dit lager eller lakehouse findes, og derefter lakehouse- eller lagerelement-id. Følgende linje indeholder et eksempel på læsning af data fra en tabel eller visning i en Spark DataFrame fra lageret eller lakehouse med det angivne arbejdsområde-id og 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>")

Bemærk

Når du kører notesbogen, søger connectoren som standard efter det angivne lager eller lakehouse i arbejdsområdet for det lakehouse, der er knyttet til notesbogen. Hvis du vil referere til et lager eller et lakehouse fra et andet arbejdsområde, skal du angive arbejdsområde-id'et og lakehouse- eller lagerelement-id'et som ovenfor.

Opret en lakehousetabel baseret på data fra et lager

Disse kodelinjer indeholder et eksempel til at læse data fra en tabel eller visning i en Spark DataFrame og bruge dem til at oprette en lakehouse-tabel:

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

Fejlfind

Når det læsesvarstykke er fuldført, vises det i cellens output. Fejl i den aktuelle celle annullerer også efterfølgende celleudførelser af notesbogen. Detaljerede fejloplysninger er tilgængelige i Spark-programlogfilerne.

Aktuelle begrænsninger

Connectoren:

  • Understøtter datahentning fra Fabric-lagre og SQL-analyseslutpunkter for lakehouse-elementer.
  • Fabric DW understøtter Time Travel nu, men denne connector fungerer ikke for en forespørgsel med tidsrejsesyntaks.
  • Bevarer brugssignaturen som den, der leveres med Apache Spark til Azure Synapse Analytics for at sikre ensartethed. Det er dog ikke bagudkompatibelt at oprette forbindelse til og arbejde med en dedikeret SQL-pulje i Azure Synapse Analytics.
  • Kolonnenavne med specialtegn håndteres ved at tilføje escape-tegn, før forespørgslen, der er baseret på et tabel-/visningsnavn i tre dele, sendes. Hvis en brugerdefineret eller passthrough-forespørgsel er baseret på læsning, skal brugerne undgå kolonnenavne, der indeholder specialtegn.