Jaa


Microsoft Fabric Data Warehousen Spark-liitin

Fabric Data Warehousen Spark-yhdistimen avulla Spark-kehittäjät ja -tietojenkäsittelyasiantuntijat voivat käyttää ja käsitellä tietoja varastosta ja Lakehousen SQL-analytiikan päätepisteestä. Liitin tarjoaa seuraavat ominaisuudet:

  • Voit käsitellä tietoja varaston tai SQL-analytiikan päätepisteestä samassa työtilassa tai useissa työtiloissa.
  • Lakehousen SQL-analytiikan päätepiste löydetään automaattisesti työtilan kontekstin mukaan.
  • Liittimellä on yksinkertaistettu Spark-ohjelmointirajapinta, joka abstakti pohjana olevan monimutkaisuuden ja toimii vain yhdellä koodirivillä.
  • Kun käytät taulukkoa tai näkymää, liitin ylläpitää SQL-moduulitasolla määritettyjä suojausmalleja. Näitä malleja ovat objektitason suojaus (OLS), rivitason suojaus (RLS) ja saraketason suojaus (CLS).
  • Liitin on asennettu valmiiksi Fabric-suorituspalvelussa, joten erillistä asennusta ei tarvita.

Muistiinpano

Liitin on tällä hetkellä esikatseluvaiheessa. Katso lisätietoja tämän artikkelin nykyisistä rajoituksista .

Todentaminen

Microsoft Entra -todentaminen on integroitu todentamismenetelmä. Käyttäjät kirjautuvat Microsoft Fabric -työtilaan, ja heidän tunnistetietonsa välitetään automaattisesti SQL-moduuliin todentamista ja valtuutusta varten. Tunnistetiedot yhdistetään automaattisesti, eikä käyttäjien tarvitse antaa tiettyjä määritysasetuksia.

Oikeudet

Jotta käyttäjät voivat muodostaa yhteyden SQL-moduuliin, he tarvitsevat vähintään lukuoikeuden (vastaa SQL Serverin CONNECT-käyttöoikeuksia) varastossa tai SQL-analytiikan päätepisteessä (nimiketasolla). Käyttäjillä on myös oltava eriytettyjä objektitason käyttöoikeuksia tietojen lukemiseen tietyistä taulukoista tai näkymistä. Lisätietoja on artikkelissa Microsoft Fabric -tietovarastoinnin suojaus.

Koodimallit ja esimerkit

Käytä menetelmän allekirjoitusta

Seuraava komento näyttää lukupyynnön menetelmän synapsesql allekirjoituksen. Kolmiosainen tableName argumentti vaaditaan, kun käytetään varaston taulukoita tai näkymiä sekä Lakehousen SQL-analytiikan päätepistettä. Päivitä argumentti seuraavilla nimillä skenaariosi perusteella:

  • Osa 1: Varaston tai lakehousen nimi.
  • Osa 2: Rakenteen nimi.
  • Osa 3: Taulukon tai näkymän nimi.
synapsesql(tableName:String="<Part 1.Part 2.Part 3>") => org.apache.spark.sql.DataFrame

Sen lisäksi, että tämä liitin lukee suoraan taulukosta tai näkymästä, sen avulla voit myös määrittää mukautetun tai läpivientikyselyn, joka välitetään SQL-moduuliin ja jonka tulos palautetaan Takaisin Sparkiin.

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

Vaikka tämä liitin löytää automaattisesti määritetyn varaston / Lakehousen päätepisteen, voit tehdä sen, jos haluat määrittää sen eksplisiittisesti.

//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>") 

Samassa työtilassa olevien tietojen lukeminen

Tärkeä

Suorita nämä tuontilausekkeet muistikirjasi alussa tai ennen kuin aloitat liittimen käytön:

Skalaa varten

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

import com.microsoft.spark.fabric.Constants

Pysparkille (Python)

import com.microsoft.spark.fabric

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

Seuraava koodi on esimerkki tietojen lukemisesta Spark DataFrame -kehyksessä olevasta taulukosta tai näkymästä:

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

Seuraava koodi on esimerkki tietojen lukemisesta Spark DataFrame -kehyksessä olevasta taulukosta tai näkymästä, jonka rivimäärärajoitus on 10:

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

Seuraava koodi on esimerkki tietojen lukemisesta Taulukosta tai näkymästä Spark DataFramessa sen jälkeen, kun olet soveltanut suodattimen:

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

Seuraava koodi on esimerkki tietojen lukemisesta Spark DataFramessa olevasta taulukosta tai näkymästä vain valituille sarakkeille:

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

Tietojen lukeminen eri työtiloissa

Jos haluat käyttää ja lukea tietoja varastosta tai lakehousesta työtilojen välillä, voit määrittää työtilan tunnuksen, jossa varasto tai Lakehouse sijaitsee, ja sitten Lakehouse- tai varastonimikkeen tunnuksen. Seuraavalla rivillä on esimerkki tietojen lukemisesta taulukosta tai näkymästä Spark DataFramessa varastosta tai Lakehousesta määritetyllä työtilan tunnuksella ja Lakehouse/warehouse-tunnuksella:

# 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>")

Muistiinpano

Kun suoritat muistikirjaa, liitin etsii oletusarvoisesti määritettyä varastoa tai lakehousea muistikirjaan liitetyn lakehousen työtilasta. Jos haluat viitata varastoon tai Lakehouseen toisesta työtilasta, määritä työtilan tunnus ja lakehouse- tai varastonimikkeen tunnus edellä kuvatulla tavalla.

Lakehouse-taulukon luominen varaston tietojen perusteella

Nämä koodirivit tarjoavat esimerkin tietojen lukemiseen Spark DataFrame -kehyksessä olevasta taulukosta tai näkymästä ja sen avulla lakehouse-taulukon luomiseen:

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

Vianmääritys

Kun lukuvastauskatkelman on valmis, se näkyy solun tulosteessa. Epäonnistuminen nykyisessä solussa peruuttaa myös muistikirjan myöhemmät solujen suoritusten. Yksityiskohtaiset virhetiedot ovat käytettävissä Spark-sovelluslokeissa.

Nykyiset rajoitukset

Tällä hetkellä liitin:

  • Tukee tietojen noutoa Fabric-varastoista ja Lakehouse-kohteiden SQL-analytiikan päätepisteitä.
  • Fabric DW tukee Time Travel nyt tätä yhdistintä, mutta se ei toimi aikamatkasyntaksilla sisältävässä kyselyssä.
  • Säilyttää Apache Spark for Azure Synapse Analyticsin mukana toimitetun käyttötunnuksen yhdenmukaisuuden vuoksi. Yhteyden muodostaminen ja erillisen SQL-varannon käyttäminen Azure Synapse Analyticsissa ei kuitenkaan ole yhteensopivaa taaksepäin.
  • Erikoismerkkejä sisältävät sarakenimet käsitellään lisäämällä escape-merkki, ennen kuin kysely lähetetään 3-osaisen taulukon tai näkymän nimen perusteella. Jos kyseessä on mukautettu tai läpivientikyselypohjainen luku, käyttäjien on vältettävä erikoismerkkejä sisältäviä sarakenimiä.