Optimoi Delta Lake -taulukot V-järjestyksellä

Lakehouse ja Delta Lake taulukkomuoto ovat keskeisiä Microsoft Fabric:lle. Delta-taulukoiden optimointi on avain suorituskykyyn ja kustannustehokkuuteen analytiikkakuormissa.

Tämä artikkeli auttaa sinua päättämään, milloin käyttää V-järjestystä ja näyttää Delta-taulukoiden pääkonfiguraatio- ja ylläpitomallit.

Käytä tätä artikkelia seuraavaan:

  • Ymmärrä, mitä V-järjestys muuttaa ja milloin se auttaa.
  • Ymmärrä, miten Z-järjestys ja V-järjestys täydentävät toisiaan.
  • Valitse oikea ohjaustaso: istunto, tauluominaisuus tai kirjoitustoiminto.
  • Sovella Delta-taulukon ylläpitomalleja oikeaan Spark-ajonaikaiseen kontekstiin.

Cross-workload -ohjeita V-järjestyksen soveltamisesta kulutusskenaarioiden perusteella löytyy kohdasta Cross-workload table ylläpito ja optimointi.

Mikä on V-järjestys?

V-order on kirjoitusaikainen optimointi Parquet-tiedostoille, joka voi parantaa alavirran kyselyjen suorituskykyä Fabric-moottoreiden välillä.

Yhdellä silmäyksellä:

  • Missä se auttaa eniten: Luettavia kuvioita, kuten kojelaudanhallinta, interaktiivinen analytiikka ja toistuvat skannaukset.
  • Miten se auttaa: Järjestää Parquetin asettelun uudelleen (esimerkiksi riviryhmäjakautuminen, koodaus ja pakkaus) parantaakseen lukutehokkuutta.
  • Tyypillinen kompromissi: Kirjoitukset voivat kestää kauemmin (usein noin 15% keskimäärin), kun taas lukumäärät voivat parantua merkittävästi työmäärän mukaan.
  • Moottorin yhteensopivuus: Tiedostot pysyvät avoimen lähdekoodin Parquet-yhteensopivina, ja Delta-ominaisuudet, kuten Z-Order, ovat yhteensopivia.
  • Laajuus: V-järjestys on tiedostotaso. Delta-toimintoja, kuten tiivistymistä, tyhjiötä ja aikamatkustusta, voidaan käyttää sen kanssa.

Control V-järjestys kirjoittaa

V-järjestystä käytetään Parquet-tiedostoasettelun optimointiin nopeamman kyselysuorituskyvyn saavuttamiseksi, erityisesti lukupainotteisissa tilanteissa. Fabric-versiossa V-järjestys on oletuksena poistettu käytöstä kaikissa uusissa työtiloissa optimoimaan suorituskykyä kirjoituspainotteisille data-insinöörityökuormille.

V-järjestyksen käyttäytymistä Apache Sparkissa ohjataan seuraavilla kokoonpanoilla:

Määritys Oletusarvo Kuvaus
spark.sql.parquet.vorder.default false Ohjaa istuntotason V-järjestyksen kirjoittamista. Oletusarvon mukainen false asetus uusissa Fabric-työtiloissa.
TBLPROPERTIES("delta.parquet.vorder.enabled") Poista joukosta Ohjaa oletuksena V-järjestyksen käyttäytymistä taulukkotasolla.
DataFrame-kirjoittajan vaihtoehto: parquet.vorder.enabled Poista joukosta Käytetään V-järjestyksen ohjaamiseen kirjoitustoiminnon tasolla.

Käytä seuraavia komentoja ottaaksesi käyttöön tai ohittaaksesi V-järjestyksen kirjoitukset tarpeen mukaan omassa tilanteessasi.

V-order on oletuksena poistettu käytöstä uusissa Fabric-työtiloissa (spark.sql.parquet.vorder.default=false) parantamaan kirjoitussuorituskykyä vastaanotto- ja muunnosputkissa.

Lukupainotteisissa työkuormissa, kuten interaktiivisissa kyselyissä tai dashboardingissa, ota V-järjestys käyttöön asettamalla spark.sql.parquet.vorder.default .true Voit myös vaihtaa resurssiprofiileihin readHeavyforSparkReadHeavy , jotka automaattisesti ottavat käyttöön V-järjestyksen lukukeskeistä suorituskykyä varten.

Fabric runtime 1.3:ssa ja uudemmissa versioissa asetus spark.sql.parquet.vorder.enable poistetaan. Koska V-järjestys voidaan soveltaa automaattisesti Delta-optimoinnissa , OPTIMIZEet tarvitse tätä vanhempaa asetusta. Jos siirrät aiemmista ajonaikaisista versioista, poista tämä asetus koodistasi.

Tarkista V-järjestyksen konfiguraatio Apache Spark -istunnossa

Käytä näitä komentoja vahvistaaksesi nykyisen istunnon arvon ennen kuin vaihdat sitä.

%%sql 
SET spark.sql.parquet.vorder.default 

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

Käytä näitä komentoja, kun työkuormasi on kirjoituspainotteinen ja haluat nopeamman vastaanoton tai muunnoskirjoituksen.

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

Ota V-järjestyksen kirjoittaminen käyttöön Apache Spark -istunnossa

Kun otat V-järjestyksen käyttöön istuntotasolla, kaikki Parquet-kirjoitukset kyseisessä istunnossa käyttävät V-järjestystä, mukaan lukien ei-Delta-Parquet-taulukot ja Delta-taulukot, vaikka parquet.vorder.enabled ne olisivat eksplisiittisesti asetettu .false

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

Ohjaus V-järjestys Delta-taulukon ominaisuuksien avulla

Tässä osiossa käytetään Spark SQL:ää vain siksi, että taulun ominaisuudet määritellään SQL, DDL:n ja ALTER TABLE lauseiden avulla.

Käytä taulun ominaisuuksia, kun haluat taulukkotason oletusen, joka pätee sessioiden välillä.

Ota V-järjestys-taulun ominaisuus käyttöön taulun luomisen aikana:

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

Kun taulukon ominaisuus on asetettu true, INSERT, UPDATE, ja MERGE sovelletaan V-järjestystä kirjoitusajankohtana. Istuntotason ja kirjoitustason asetukset ovat edelleen etusijalla, joten kirjoitukset voivat silti käyttää V-järjestystä, vaikka TBLPROPERTIES ne olisivat asetettu arvoon false.

Ota V-järjestys käyttöön tai poista käytöstä muuttamalla taulukon 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 tai poistat V-järjestyksen käytöstä taulun ominaisuuksilla, vaikuttuvat vain myöhemmät kirjoitukset taulukkoon. Parquet-tiedostot säilyttävät järjestyksen, jota käytettiin luonnin aikana. Nykyisen fyysisen rakenteen muuttamiseksi V-järjestyksen soveltamiseksi tai poistamiseksi lukee Taulukon tiivistäminen.

V-järjestyksen ohjaaminen suoraan kirjoitusoperaatioissa

Tässä osiossa käytetään PySpintia DataFrame-kirjoittajan API:n esittelyyn. Sama malli on saatavilla Scala DataFrame API:ssa, joissa on vastaavat vaihtoehdot.

Käytä kirjoitustaso-asetuksia, kun tarvitset operaatiokohtaista ohjausta, sen sijaan että käyttäisit koko istunto- tai taulukkotason oletusasetuksia.

Kaikki Apache Sparkin kirjoituskomennot perivät istuntoasetuksen, jos niitä ei ole eksplisiittisesti ohitettu. Seuraavat esimerkit kirjoittavat V-järjestyksellä perimällä istunnon konfiguraation.

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 >= '2025-01-01' AND end_date <= '2025-01-31'")\
  .saveAsTable("myschema.mytable") 

V-järjestys koskee vain tiedostoja, joita predikaatti koskettaa.

Istunnossa, jossa spark.sql.parquet.vorder.default on asettamaton tai asetettu , falseseuraavat komennot kirjoitetaan V-järjestyksellä:

df_source.write\
  .format("delta")\
  .mode("overwrite")\
  .option("replaceWhere","start_date >= '2025-01-01' AND end_date <= '2025-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()