Jaa


Delta Lake -taulukon optimointi ja V-Order

Lakehouse- ja Delta Lake -taulukkomuodot ovat keskeisiä Microsoft Fabricissa, sillä ne varmistavat, että taulukot on optimoitu analytiikkaa varten. Tässä oppaassa käsitellään Delta Lake -taulukon optimoinnin käsitteitä, määrityksiä ja sitä, miten sitä käytetään yleisimmissä massadatan käyttötavoissa.

Mikä on V-järjestys?

V-Order on kirjoitusajan optimointi parquet-tiedostomuotoon , joka mahdollistaa salamannopean lukemisen Microsoft Fabric -käsittelymoduulissa, kuten Power BI:ssä, SQL:ssä, Sparkissä ja muissa.

Power BI- ja SQL-moottorit hyödyntävät Microsoft Verti-Scan -tekniikkaa ja V-tilattuja parquet-tiedostoja muistissa olevien tietojen käyttöaikojen saavuttamiseen. Spark ja muut ei-Verti-Scan käsittelymoduulit hyötyvät myös V-Tilatut tiedostot keskimäärin 10 % nopeammin lukuajat, joissa joissakin skenaarioissa jopa 50%.

V-Order toimii käyttämällä erityistä lajittelua, riviryhmän jakelua, hakemiston koodausta ja pakkausta parquet-tiedostoissa, mikä edellyttää vähemmän verkko-, levy- ja suoritinresursseja laskentamoottoreiden sen lukemiseen, mikä tarjoaa kustannustehokkuuden ja suorituskyvyn. V-järjestyksen lajittelulla on 15 % vaikutus keskimääräiseen kirjoitusaikaan, mutta se tarjoaa jopa 50 % enemmän pakkausta.

Se on 100 % avoimen lähdekoodin parquet-muoto yhteensopiva; kaikki parquet-moottorit voivat lukea sen tavallisena parquet-tiedostona. Delta-taulukot ovat tehokkaampia kuin koskaan; ominaisuudet, kuten Z-Order, ovat yhteensopivia V-Orderin kanssa. Taulukon ominaisuuksia ja optimointikomentoja voidaan käyttää sen osioissa näennäisjärjestyksen hallintaan.

V-Order otetaan käyttöön parquet-tiedostotasolla. Delta-taulukot ja sen ominaisuudet, kuten Z-tilaus, kompakti, tyhjiö, aikamatkat jne. ovat ortogonaalisia V-Orderiin, ja ne ovat yhteensopivia, ja niitä voidaan käyttää yhdessä lisäetujen saamiseksi.

V-Order-kirjoitusten hallinta

V-Order on oletusarvoisesti käytössä Microsoft Fabricissa ja Apache Sparkissa, ja sitä hallitaan seuraavilla määrityksillä.

Määritys Oletusarvo Kuvaus
spark.sql.parquet.vorder.enabled true Ohjaa istuntotason V-järjestyksen kirjoittamista.
Tt LPROPERTIES("delta.parquet.vorder.enabled") false Taulukoiden oletusarvoinen V-järjestys-tila
Dataframe-kirjoittajan vaihtoehto: parquet.vorder.enabled poista joukosta V-Order-kirjoitusten hallinta Dataframe-kirjoittajan avulla

Seuraavien komentojen avulla voit hallita V-order-kirjoitusten käyttöä.

V-tilauksen määritysten tarkistaminen Apache Spark -istunnossa

%%sql 
SET spark.sql.parquet.vorder.enabled 

Poista V-tilauksen kirjoittaminen käytöstä Apache Spark -istunnossa

%%sql 
SET spark.sql.parquet.vorder.enabled=FALSE 

V-tilauksen kirjoittamisen ottaminen käyttöön Apache Spark -istunnossa

Tärkeä

Tämä on mahdollista, kun se on käytössä istuntotasolla. Kaikki parquet-kirjoitukset tehdään niin, että V-järjestys on käytössä. Tämä sisältää muut kuin Delta-parquet-taulukot ja Delta-taulukot, joiden parquet.vorder.enabled taulukko-ominaisuudeksi on määritetty joko true tai false.

%%sql 
SET spark.sql.parquet.vorder.enabled=TRUE 

V-järjestyksen hallinta Delta-taulukon ominaisuuksien avulla

Ota V-Order-taulukko-ominaisuus käyttöön taulukon luomisen aikana:

%%sql 
CREATE TABLE person (id INT, name STRING, age INT) USING parquet TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");

Tärkeä

Kun taulukko-ominaisuuden arvoksi on määritetty tosi, LISÄÄ-, UPDATE- ja MERGE-komennot toimivat odotetulla tavalla ja suorittavat kirjoitusaikaoptimoinnin. Jos V-order-istunnon määritykseksi on määritetty true tai spark.write sen ottaa käyttöön, kirjoitusten tilaksi tulee V-Tilaus, vaikka Tt LPROPERTIES-asetuksena on epätosi.

Ota V-Order käyttöön tai poista se käytöstä muuttamalla taulukko-ominaisuutta:

%%sql 
ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "true");

ALTER TABLE person SET TBLPROPERTIES("delta.parquet.vorder.enabled" = "false");

ALTER TABLE person UNSET TBLPROPERTIES("delta.parquet.vorder.enabled");

Kun otat V-Orderin käyttöön tai poistat sen käytöstä taulukon ominaisuuksien avulla, se vaikuttaa vain taulukon jatkokirjoituksiin. Parquet-tiedostot säilyttävät järjestyksen, jota käytettiin luonnin aikana. Jos haluat muuttaa nykyisen fyysisen rakenteen käyttämään tai poistamaan V-järjestyksen, lue alla oleva osio "Ohjausobjektin V-järjestys taulukkoa optimoitaessa".

V-järjestyksen hallinta suoraan kirjoitustoiminnoissa

Kaikki Apache Spark -kirjoituskomennot perivät istuntoasetuksen, jos se ei ole eksplisiittinen. Kaikki seuraavat komennot kirjoittavat V-Order-järjestyksellä perimällä istunnon määritykset implisiittisesti.

df_source.write\
  .format("delta")\
  .mode("append")\
  .saveAsTable("myschema.mytable")

DeltaTable.createOrReplace(spark)\
  .addColumn("id","INT")\
  .addColumn("firstName","STRING")\
  .addColumn("middleName","STRING")\
  .addColumn("lastName","STRING",comment="surname")\
  .addColumn("birthDate","TIMESTAMP")\
  .location("Files/people")\
  .execute()

df_source.write\
  .format("delta")\
  .mode("overwrite")\
  .option("replaceWhere","start_date >= '2017-01-01' AND end_date <= '2017-01-31'")\
  .saveAsTable("myschema.mytable") 

Tärkeä

V-Order koskee vain tiedostoja, joihin predikaatti vaikuttaa.

Jos istunto spark.sql.parquet.vorder.enabled on määrittämätön tai epätosi, seuraavat komennot kirjoitetaan V-Order-järjestyksellä:

df_source.write\
  .format("delta")\
  .mode("overwrite")\
  .option("replaceWhere","start_date >= '2017-01-01' AND end_date <= '2017-01-31'")\
  .option("parquet.vorder.enabled ","true")\
  .saveAsTable("myschema.mytable")

DeltaTable.createOrReplace(spark)\
  .addColumn("id","INT")\
  .addColumn("firstName","STRING")\
  .addColumn("middleName","STRING")\
  .addColumn("lastName","STRING",comment="surname")\
  .addColumn("birthDate","TIMESTAMP")\
  .option("parquet.vorder.enabled","true")\
  .location("Files/people")\
  .execute()

Mitä on Optimoi kirjoitus?

Massadatan käsittelykoneiden, kuten Apache Sparkin, analyyttiset kuormitukset toimivat tehokkaimmin, kun käytetään standardoituja suurempia tiedostokokoja. Tiedostokoon, tiedostojen määrän, Spark-työntekijöiden määrän ja sen kokoonpanojen välinen suhde on tärkeä suorituskyvyn kannalta. Tietojen käyttö Data Lake -taulukoissa on saattanut periä ominaisuuden, joka on jatkuvasti kirjoitettaessa paljon pieniä tiedostoja. Tätä skenaariota kutsutaan yleisesti nimellä "pieni tiedosto-ongelma".

Optimize Write on Delta Lake on Microsoft Fabric ja Azure Synapse Analytics -ominaisuus Apache Spark -moduulissa. Se vähentää kirjoitettujen tiedostojen määrää ja pyrkii kasvamaan kirjoitettujen tietojen yksittäistä tiedostokokoa. Kohdetiedoston kokoa voidaan muuttaa kuormitusvaatimusten mukaan määritysten avulla.

Ominaisuus on oletusarvoisesti käytössä Microsoft Fabric Runtime for Apache Spark -palvelussa. Jos haluat lisätietoja käyttöskenaarioiden kirjoittamisen optimoimisesta, lue artikkeli Apache Sparkiin kirjoittamisen optimoinnin tarve.

Yhdistä optimointi

Delta Lake MERGE -komennon avulla käyttäjät voivat päivittää delta-taulukkoa lisäehdoin. Se voi päivittää lähdetaulukon, näkymän tai DataFramen tietoja kohdetaulukkoon käyttämällä MERGE-komentoa. Delta Lake -avoin lähdekoodi jakauman nykyistä algoritmia ei kuitenkaan ole täysin optimoitu muokkaamattomien rivien käsittelyyn. Microsoft Spark Delta -tiimi otti käyttöön mukautetun Low Shuffle Merge -optimoinnin. Muokkaamattomat rivit jätetään pois kalliista sekoitustoiminnosta, jota tarvitaan vastaavien rivien päivittämiseen.

Toteutusta hallitaan määrityksellä spark.microsoft.delta.merge.lowShuffle.enabled , joka on oletusarvoisesti käytössä suorituspalvelussa. Koodi ei vaadi muutoksia, ja se on täysin yhteensopiva Delta Lake -järven avoimen lähdekoodin jakauman kanssa. Lisätietoja Low Shuffle Merge -käyttöskenaarioita koskevista ohjeartikkelista Low Shuffle Merge -optimointi Delta-taulukoissa.

Delta-taulukoiden ylläpito

Delta-taulukoiden muuttuessa suorituskyky ja tallennuskustannusten tehokkuus yleensä heikentyvät seuraavista syistä:

  • Taulukkoon lisätyt uudet tiedot saattavat vääristää tietoja.
  • Tietojen käsittelynopeudet eräille ja suoratoistolle saattavat tuoda paljon pieniä tiedostoja.
  • Toimintojen päivittäminen ja poistaminen luovat lopulta lukukustannuksia. Jäsennystiedostot ovat rakenteittain muuttumattomia, joten Delta-taulukot lisäävät uudet parquet-tiedostot muutosjoukkoon ja vahvistavat kahden ensimmäisen kohteen vuoksi asetettuja ongelmia.
  • Tallennustilassa käytettävissä olevat datatiedostot ja lokitiedostot eivät enää ole käytettävissä.

Jotta taulukot pysyvät parhaassa tilassa parhaan suorituskyvyn takaamiseksi, suorita lokeron tiivistys- ja poistotoiminnot Delta-taulukoissa. Lokeron kompaktin tiivistys saavutetaan OPTIMIZE-komennolla . Se yhdistää kaikki muutokset suurempiin ja koostettuihin parquet-tiedostoihin. Tallennustilan puhdistus onnistuu VACUUM-komennolla.

Taulukon ylläpitokomentoja OPTIMIZE ja VACUUM voidaan käyttää muistikirjoissa ja Spark Job Definitions -määritelmissä, ja ne voidaan sen jälkeen järjestää käyttöympäristön toiminnoilla. Lakehouse in Fabric tarjoaa käyttöliittymän toimintoja ad-hoc-taulukoiden ylläpitoon Delta Lake -taulukon ylläpitoa artikkelissa kuvatulla tavalla.

Tärkeä

Taulukon fyysisen rakenteen suunnitteleminen oikein käsittelytiheyden ja odotettujen lukumallien perusteella on todennäköisesti tärkeämpää kuin tässä osiossa kuvattujen optimointikomentojen suorittaminen.

V-järjestyksen hallinta taulukkoa optimoitaessa

Seuraavat komentorakenteet lokeroivat kompaktin lokeron ja kirjoittavat uudelleen kaikki tiedostot, joihin tämä vaikuttaa, V-Orderilla, riippumatta Tt LPROPERTIES-asetuksesta tai istunnon määritysasetuksesta:

%%sql 
OPTIMIZE <table|fileOrFolderPath> VORDER;

OPTIMIZE <table|fileOrFolderPath> WHERE <predicate> VORDER;

OPTIMIZE <table|fileOrFolderPath> WHERE <predicate> [ZORDER  BY (col_name1, col_name2, ...)] VORDER;

Kun ZORDER:ia ja VORDER:iä käytetään yhdessä, Apache Spark suorittaa lokeron kompaktin, ZORDER:n, VORDER:n järjestyksessä.

Seuraavat komennot lokeroi kompaktin lokeron ja kirjoittavat uudelleen kaikki tiedostot, joita Tt LPROPERTIES-asetus koskee. Jos Tt LPROPERTIES-asetuksen arvoksi on määritetty V-Order, kaikki tiedostot, joita asia koskee, kirjoitetaan nimellä V-Order. Jos Tt LPROPERTIES-asetuksen asetuksena on epätosi tai sen arvoksi on asetettu V-Order, se perii istuntoasetuksen. Joten jos haluat poistaa V-Orderin taulukosta, määritä istunnon määrityksen arvoksi epätosi.

%%sql 
OPTIMIZE <table|fileOrFolderPath>;

OPTIMIZE <table|fileOrFolderPath> WHERE predicate;

OPTIMIZE <table|fileOrFolderPath> WHERE predicate [ZORDER BY (col_name1, col_name2, ...)];