Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Tiedostojen ohittaminen on Delta Laken lukuoptimointi, joka antaa Spark-moottorille mahdollisuuden välttää datatiedostojen skannaaminen, jotka eivät voi sisältää vastaavia rivejä. Koska moottori lukee vähemmän dataa, kyselyt toimivat nopeammin ja kuluttavat vähemmän I/O-resursseja.
Miten tiedostojen ohittaminen toimii
Joka kerta kun tiedosto kirjoitetaan Delta-taululle, Delta Lake tallentaa tiedostokohtaiset sarakkeet transaktiolokissa. Nämä tilastot sisältävät kunkin indeksoidun sarakkeen minimiarvon, maksimiarvon ja nollamäärän kyseisessä tiedostossa.
Kun kysely sisältää suodattimen predikaatin, moottori vertaa predikaattiarvoa kunkin tiedoston minim/maksimiväliin. Jos predikaattiarvo jää tiedoston alueen ulkopuolelle, tiedosto ohitetaan kokonaan—sitä ei tarvitse avata tai skannata.
Esimerkiksi tarkastellaan taulukkoa sales , joka on jaettu viiteen tietotiedostoon päivämäärävälin mukaan:
| Tiedosto | Min/maksimitilastot | Tulos WHERE date = '2024-03-15' |
|---|---|---|
| Tiedosto 1 | date [2024-01-01 .. 2024-02-28] |
Ohitettu |
| Tiedosto 2 | date [2024-03-01 .. 2024-03-31] |
Lue ✓ |
| Tiedosto 3 | date [2024-04-01 .. 2024-05-31] |
Ohitettu |
| Tiedosto 4 | date [2024-06-01 .. 2024-07-31] |
Ohitettu |
| Tiedosto 5 | date [2024-08-01 .. 2024-09-30] |
Ohitettu |
Tässä tapauksessa neljä viidestä tiedostosta ohitetaan – 80% vähemmän dataa skannattu – koska niiden minimi/maksimivälit eivät mene päällekkäin suodattimen arvon kanssa.
Important
Predikaattiarvon tietotyypin on vastattava saraketin tyyppiä. Tyypin epäsopimattomuus voi estää moottoria käyttämästä tiedostotason tilastoja ohittamiseen.
Oletustoimintaa
Delta Lake kerää tiedostotilastoja automaattisesti seuraavilla oletusasetuksilla:
- Vain ensimmäiset 32 saraketta (järjestyspaikan mukaan) kerätään tilastoja.
- Tilastot, joita seurataan per sarake per tiedosto: minim, maksimi ja nollamäärä
- Tilastojen kerääminen pitkistä särösarakkeista on kallista ja lisää kirjoituskuormaa, joten sijoittuminen on tärkeää.
Taulukkoominaisuus delta.dataSkippingNumIndexedCols ohjaa sarakkeen rajaa. Sarakkeet, jotka ylittävät tämän kynnyksen, eivät saa tiedostotason tilastoja eivätkä voi osallistua tiedostojen ohittamiseen.
Kelvolliset tietotyypit
Kaikki saraketyypit eivät tue tiedostotason tilastoja ja siten tiedostojen ohittamista. Moottori arvioi kunkin sarakkeen tietotyypin selvittääkseen, voidaanko kerätä minimi/maksimitilastoja.
Aina kelpoisia (atomityypit)
-
NumericType(ByteType,ShortType,IntegerType,LongType,FloatTypeDoubleType, , )DecimalType DateTypeTimestampTypeTimestampNTZTypeStringType
Ehdollisesti kelvollinen
Muistio
Seuraavat tyypit voidaan ottaa käyttöön aloittaessaan Fabric Spark Runtime 2.0:sta (Delta 4.1)
-
VariantType: kunspark.databricks.delta.variantShredding.collectVariantDataSkippingStatson käytössä. -
ArrayType: kunspark.microsoft.delta.skipping.complexTypes.enabledon käytössä ja alkiotyyppi itsessään on kelvollinen. -
MapType: kunspark.microsoft.delta.skipping.complexTypes.enabledon käytössä ja sekä avain että arvotyypit ovat kelvollisia.
Ei kelvollinen
BinaryTypeBooleanType-
StructType(kokonaisuutena—rakenteiden sisällä olevat lehtikentät arvioidaan yksilöllisesti) NullType
Maksimoi palstapeitto
Saadaksesi parhaan hyödyn tiedostojen ohittamisesta, varmista, että sarakkeet, joihin suodatat useimmin, kuuluvat tiedostotilastoihin.
Aseta usein suodatetut sarakkeet ensin
Aseta sarakkeet, jotka esiintyvät useimmiten WHERE lauseissa, yhdistävät avaimet ja suodata predikaatit taulukon skeeman ensimmäisiin 32 ordinaalipaikkaan. Siirrä pitkät merkkijonosarakkeet tai matalan selektiivisyyden sarakkeet sijainnin 32 ulkopuolelle, jotta et tuhlaa kirjoituskuormaa tilastoihin, jotka harvoin auttavat.
Lisää indeksoitujen sarakkeiden määrää
Jos taulukossasi on yli 32 saraketta, jotka hyötyvät tilastoista, nosta oletusrajaa:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.dataSkippingNumIndexedCols' = '40')
Muistio
Indeksoitujen sarakkeiden määrän kasvattaminen lisää kirjoituskuormaa jokaiselle datatiedostolle. Tätä arvoa nostetaan vain, kun ylimääräisiä sarakkeita käytetään usein suodatinpredikaateissa.
Määritä tarkat sarakkeet tilastoille
Käytä delta.dataSkippingStatsColumns eksplisiittisesti hallintaan, mitkä sarakkeet saavat tiedostotilastoja, riippumatta ordinaalisijainnista:
ALTER TABLE table_name SET TBLPROPERTIES ('delta.dataSkippingStatsColumns' = 'col1,col2')
Kun delta.dataSkippingStatsColumns se on asetettu, tilastot kerätään vain määritellyistä sarakkeista. Tämä lähestymistapa antaa sinulle tarkan hallinnan kirjoituskustannusten ja lukuhyötyjen välisestä kompromissista.
Yhdistä tiedostojen ohittaminen datan asetteluun
Tiedostojen ohittaminen toimii parhaiten, kun vastaavat arvot ovat samassa tiedostossa. Tekniikat kuten ZORDER BY nestemäinen klusterointi järjestävät datan fyysisesti uudelleen niin, että samankaltaisilla sarakkeilla varustetut rivit päätyvät samoihin tiedostoihin. Samankaltaisten arvojen kokoaminen tiivistää tiedostokohtaisia mini/max-alueita, mikä lisää moottorin ohittamien tiedostojen prosenttiosuutta tietylle suodattimelle.
Lisätietoja datan asettelun optimoinnista löytyy kohdasta Taulukko tiivistäminen, Nesteklusterointi ja Z-järjestys.