Apache Spark Runtimes in Fabric
Microsoft Fabric Runtime on Azuren integroitu Apache Sparkiin perustuva ympäristö, joka mahdollistaa tietotekniikan ja tietojenkäsittelykokemusten suorittamisen ja hallinnan. Se yhdistää sekä sisäisistä että avoimen lähdekoodin lähteistä peräisin olevat keskeiset komponentit ja tarjoaa asiakkaille kattavan ratkaisun. Yksinkertaisuuden vuoksi käytämme Microsoft Fabric Runtime -versiota, joka toimii Apache Sparkin avulla nimellä Fabric Runtime.
Fabric Runtime -kohteen pääkomponentit:
Apache Spark – tehokas avoimen lähdekoodin hajautettu tietojenkäsittelykirjasto, joka mahdollistaa suuren mittakaavan tietojen käsittelyn ja analytiikkatehtävät. Apache Spark tarjoaa monipuolisen ja suorituskykyisen ympäristön tietotekniikka- ja datatiedekokemuksiin.
Delta Lake – avoimen lähdekoodin tallennuskerros, joka tuo ACID-tapahtumat ja muut tietojen luotettavuusominaisuudet Apache Sparkiin. Fabric Runtimeen integroitu Delta Lake parantaa tietojenkäsittelyominaisuuksia ja varmistaa tietojen yhtenäisyyden useissa samanaikaisissa toiminnoissa.
Alkuperäinen suorittamismoduuli - on muuntava parannus Apache Spark -kuormituksille, jotka tarjoavat merkittäviä suorituskykyhyötyjä suorittamalla suoraan Spark-kyselyjä Lakehouse-infrastruktuurissa. Saumattomasti integroituna se ei vaadi koodin muutoksia ja välttää toimittajan lukituksen, joka tukee sekä Parquet- että Delta-muotoja Apache Spark -ohjelmointirajapituissa Runtime 1.3:ssa (Spark 3.5). Tämä moottori nopeuttaa kyselyiden nopeutta jopa neljä kertaa nopeammin kuin perinteinen OSS Spark TPC-DS 1TB:n vertailuarvosta käy ilmi, mikä vähentää toimintakustannuksia ja parantaa eri tietotehtävien tehokkuutta – mukaan lukien tietojen käsittely, ETL, analytiikka ja vuorovaikutteiset kyselyt. Meta's Veloxin ja Intelin Apache Glutenin pohjalta se optimoi resurssien käytön ja käsittelee erilaisia tietojen käsittelyskenaarioita.
Java/Scala-, Python- ja R-pakettien oletustason paketit, jotka tukevat erilaisia ohjelmointikieliä ja ympäristöjä. Nämä paketit asennetaan ja määritetään automaattisesti, jotta kehittäjät voivat käyttää haluamiaan ohjelmointikieliä tietojenkäsittelytehtävissä.
Microsoft Fabric Runtime on perustuu vahvaan avoimen lähdekoodin käyttöjärjestelmään, joka takaa yhteensopivuuden eri laitteistomääritysten ja järjestelmävaatimusten kanssa.
Alla on kattava vertailu tärkeimmistä osista, kuten Apache Spark -versiot, tuetut käyttöjärjestelmät Java, Scala, Python, Delta Lake ja R, Apache Spark -pohjaisille suorituspalveluille Microsoft Fabric -ympäristössä.
Vihje
Käytä aina tuotantokuormituksessa viimeisintä GA-suorituspalveluversiota, joka on tällä hetkellä Runtime 1.3.
Runtime 1.1 | Suorituksenaikainen 1.2 | Suorituksenaikainen 1.3 | |
---|---|---|---|
Apache Spark | 3.3.1 | 3.4.1 | 3.5.0 |
Käyttöjärjestelmä | Ubuntu 18.04 | Merijalkaväki 2.0 | Merijalkaväki 2.0 |
Java | 8 | 11 | 11 |
Scala | 2.12.15 | 2.12.17 | 2.12.17 |
Python | 3,10 | 3,10 | 3.11 |
Delta Lake | 2.2.0 | 2.4.0 | 3,2 |
R | 4.2.2 | 4.2.2 | 4.4.1 |
Runtime 1.1-, Runtime 1.2 - ja Runtime 1.3 -kohdissa on tietoja tietyn suorituksenaikaisen version ominaisuuksista, uusista ominaisuuksista, parannuksista ja siirtoskenaarioita.
Microsoft Fabricissa sekä Spark-moduulin että Delta Lake -toteutukset sisältävät ympäristökohtaisia optimointeja ja ominaisuuksia. Nämä ominaisuudet on suunniteltu käyttämään alkuperäisiä integrointeja ympäristössä. On tärkeää huomata, että kaikki nämä ominaisuudet voidaan poistaa käytöstä Spark- ja Delta Lake -vakiotoimintojen mahdollistamiseksi. Apache Sparkin Fabric Runtimes -suorituspalvelu sisältää seuraavat:
- Apache Sparkin täydellinen avoimen lähdekoodin versio.
- Kokoelma lähes 100:aa sisäänrakennettua erillisten kyselyjen suorituskyvyn parannusta. Näitä parannuksia ovat esimerkiksi osion välimuistitallennus (FileSystem-osiovälimuistin käyttöönotto metasäilökutsujen vähentämiseksi) ja Cross Join to Projection of Scalar Subquery -kysely.
- Sisäinen älykäs välimuisti.
Fabric Runtime for Apache Spark- ja Delta Lake -järven sisällä on alkuperäisiä kirjoitusominaisuuksia, jotka palvelevat kahta tärkeää tarkoitusta:
- Ne tarjoavat eriytetyn suorituskyvyn kuormitusten kirjoittamiseen ja kirjoitusprosessin optimointiin.
- Oletusarvona on Delta Parquet -tiedostojen V-order-optimointi. Delta Lake V-Order -optimointi on erittäin tärkeää, jotta kaikkien Fabric-moottoreiden lukusuorituskyky on parempi. Jos haluat lisätietoja siitä, miten se toimii ja miten sitä hallitaan, lue artikkeli, joka käsittelee Delta Lake -taulukon optimointia ja V-tilausta.
Fabric tukee useita suorituksenaikaisia toimintoja, joten käyttäjät voivat vaihtaa saumattomasti niiden välillä minimoiden yhteensopivuuden tai häiriöiden riskin.
Oletusarvoisesti kaikissa uusissa työtiloissa käytetään uusinta suorituksenaikaista versiota, joka on tällä hetkellä Runtime 1.3.
Jos haluat muuttaa suorituspalveluversiota työtilatasolla, siirry kohtaan Työtilan asetukset>Tietotekniikka/tiede>Spark-asetukset. Valitse Environment -välilehdestä haluamasi suorituksenaikainen versio käytettävissä olevista vaihtoehdoista. Vahvista valinta valitsemalla Tallenna.
Kun olet tehnyt tämän muutoksen, kaikki järjestelmän luomat kohteet työtilassa, mukaan lukien Lakehouset, SJD:t ja Muistikirjat, toimivat käyttämällä uutta valittua työtilatason suorituspalveluversiota, joka alkaa seuraavasta Spark-istunnosta. Jos käytät parhaillaan muistikirjaa, jossa on aiemmin luotu istunto työhön tai mihin tahansa Lakehouseen liittyvään toimintaan, spark-istunto jatkuu sellaisenaan. Seuraavasta istunnosta tai työstä alkaen valittu suorituksenaikainen versio otetaan kuitenkin käyttöön.
Yleisesti ottaen pyrimme siirtämään kaikki Spark-asetukset. Jos kuitenkin huomaamme, että Spark-asetus ei ole yhteensopiva Runtime B:n kanssa, annamme varoitussanoman ja vältämme asetuksen käyttöönoton.
Yleisesti ottaen lähestymistapamme on siirtää kaikki kirjastot Runtime A:sta Runtime B:hen, mukaan lukien sekä julkiset että mukautetut suorituspalvelut. Jos Python- ja R-versiot pysyvät muuttumattomina, kirjastojen pitää toimia oikein. Jarsilla on kuitenkin merkittävä todennäköisyys, että ne eivät välttämättä toimi riippuvuussuhteiden muutosten ja muiden tekijöiden, kuten Scalan, Javan, Sparkin ja käyttöjärjestelmän muutosten, vuoksi.
Käyttäjä on vastuussa niiden kirjastojen päivittämisestä tai korvaamisesta, jotka eivät toimi Runtime B:ssä. Jos on ristiriita, mikä tarkoittaa sitä, että Runtime B sisältää kirjaston, joka on alun perin määritetty Runtime A:ssa, kirjastonhallintajärjestelmämme yrittää luoda tarvittavan riippuvuuden Runtime B:lle käyttäjän asetusten perusteella. Luontiprosessi kuitenkin epäonnistuu, jos syntyy ristiriita. Virhelokista käyttäjät voivat nähdä, mitkä kirjastot aiheuttavat ristiriitoja, ja tehdä muutoksia versioihinsa tai määrityksiinsä.
Delta Lake -ominaisuudet ovat aina yhteensopivassa taaksepäin, mikä varmistaa, että alemmassa Delta Lake -versiossa luodut taulukot voivat saumattomasti käsitellä suurempia versioita. Kuitenkin kun tietyt ominaisuudet ovat käytössä (esimerkiksi -menetelmää käyttämällä delta.upgradeTableProtocol(minReaderVersion, minWriterVersion)
, eteenpäin yhteensopivuus alempien Delta Lake -versioiden kanssa saattaa vaarantua. Tällaisissa tapauksissa on tärkeää muokata päivitettyihin taulukoihin viittaavia kuormituksia, jotta ne tasataan yhteensopivuutta takaavan Delta Lake -version kanssa.
Jokainen Delta-taulukko liittyy protokollamääritykseen, joka määrittää ominaisuudet, joita se tukee. Sovellukset, jotka käsittelevät taulukkoa joko lukemista tai kirjoittamista varten, käyttävät tätä protokollamääritystä selvittääkseen, ovatko ne yhteensopivia taulukon ominaisuusjoukon kanssa. Jos sovelluksella ei ole mahdollisuutta käsitellä taulukon protokollassa tuettua ominaisuutta, sitä ei voi lukea kyseisestä taulukosta tai kirjoittaa siihen.
Protokollamääritys on jaettu kahteen erilliseen osaan: lukuprotokollaan ja kirjoitusprotokollaan. Vieraile sivulla "Miten Delta Lake hallitsee ominaisuuksien yhteensopivuutta?" lukeaksesi siitä tietoja.
Käyttäjät voivat suorittaa komennon delta.upgradeTableProtocol(minReaderVersion, minWriterVersion)
PySpark-ympäristössä sekä Spark SQL:ssä ja Scalassa. Tämän komennon avulla he voivat aloittaa päivityksen Delta-taulukkoon.
On tärkeää huomata, että tätä päivitystä suorittaessaan käyttäjät saavat varoituksen, jonka mukaan Delta-protokollaversion päivittäminen on peruuttamaton prosessi. Tämä tarkoittaa sitä, että kun päivitys on suoritettu, sitä ei voi kumota.
Protokollaversion päivitykset voivat mahdollisesti vaikuttaa nykyisten Delta Lake -taulukon lukijoiden, kirjoittajien tai molempien yhteensopivuuteen. Siksi on suositeltavaa edetä varovasti ja päivittää protokollaversio vain tarvittaessa, esimerkiksi uusien ominaisuuksien käyttöönoton yhteydessä Delta Lakessa.
Lisäksi käyttäjien tulee varmistaa, että kaikki nykyiset ja tulevat tuotannon kuormitukset ja prosessit ovat yhteensopivia Delta Lake -taulukoiden kanssa käyttämällä uutta protokollaversiota, mikä varmistaa saumattoman siirtymän ja estää mahdolliset häiriöt.
Uusimmassa Fabric Runtime -versiossa, versiossa 1.3 ja Fabric Runtime, versio 1.2, oletustaulukkomuoto (spark.sql.sources.default
) on nyt delta
. Fabric Runtime -version aiemmissa versioissa , versiossa 1.1 ja kaikissa Synapse Runtime for Apache Sparkissä, joka sisältää Sparkin 3.3 tai sitä uudemman, oletustaulukkomuoto määritettiin muodossa parquet
. Tarkista Azure Synapse Analyticsin ja Microsoft Fabricin väliset erot Apache Sparkin määritystiedoista.
Kaikki spark SQL:llä, PySparkilla, Scala Sparkillä ja Spark R:llä luodut taulukot luovat taulukon delta
oletusarvoisesti aina, kun taulukkotyyppi jätetään pois. Jos komentosarjat määrittävät taulukkomuodon eksplisiittisesti, sitä noudatetaan.
USING DELTA
Spark create table -komennoista tulee tarpeettomia.
Komentosarjat, jotka odottavat tai olettavat parquet-taulukon muotoa, tarkistetaan. Seuraavia komentoja ei tueta Delta-taulukoissa:
ANALYZE TABLE $partitionedTableName PARTITION (p1) COMPUTE STATISTICS
ALTER TABLE $partitionedTableName ADD PARTITION (p1=3)
ALTER TABLE DROP PARTITION
ALTER TABLE RECOVER PARTITIONS
ALTER TABLE SET SERDEPROPERTIES
LOAD DATA
INSERT OVERWRITE DIRECTORY
SHOW CREATE TABLE
CREATE TABLE LIKE