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.
Koskee:✅ Fabric-data-insinöörit ja datatiede
Automaattiset taulukkotilastot Microsoft Fabric -sovelluksessa auttavat Sparkia optimoimaan kyselyjen suoritusta keräämällä automaattisesti taulukoiden ja sarakkeiden mittarit Delta-tauluille.
- Riviä lasketaan.
- Null lasketaan sarakkeeseen.
- Vähimmäis- ja maksimiarvot per sarakke.
- Eri arvot lasketaan sarakkeeseen.
- Keskimääräiset ja maksimipituiset sarakkeet.
Oletuksena nämä laajennetut tilastot kerätään ensimmäisille 32 sarakkeelle (mukaan lukien sisäkkäiset sarakkeet) Delta-taulukoissa Fabricissa. Tämä data auttaa Sparkin kustannusperusteista optimointiohjelmaa (CBO) parantamaan liitoksen, suodattimien, aggregaatioiden ja osien karsimisen suunnittelua.
Tämän seurauksena monet työkuormat voivat vähentää kyselyiden viivettä ja laskennan käyttöä vähentämällä manuaalista tilastojen ylläpitoa.
Taulukkooptimointistrategioiden ristiintyökuorman ohjausta löytyy kohdasta Cross-workload table maintenance and optimization.
Keskeiset edut
Automaattiset tilastot tarjoavat seuraavat edut:
- Automaattinen käytössä Delta-taulukoille Fabricissa.
- Parantaa kyselysuunnittelun laatua yleisille analytiikkamalleille.
- Vähentää tarvetta toistua manuaalista tilastojen keräämistä.
- Tallentaa tilastot taulukkotiedostojen ulkopuolelle tietotiedostojen paisumisen välttämiseksi.
Miten se toimii
Fabric Spark kerää laajennettuja tilastoja kirjoitushetkellä ja käyttää niitä suunnittelun aikana.
Kokoelman laajuus ja käyttäytyminen:
- Tilastot kerätään kirjoitusaikana.
- Kokoelma kohdistuu ensimmäisiin 32 sarakkeeseen, mukaan lukien sisäkkäiset sarakkeet).
- Taulukon ominaisuudet voivat ohittaa istuntotason käyttäytymisen.
- Konfiguraatio määrittää, syöttääkö Spark tilastoja optimoijaan.
Nämä mittarit auttavat Sparkia valitsemaan parempia yhdistämisstrategioita, parantamaan osien karsimista ja optimoimaan aggregaatiosuunnitelmia.
Ota käyttöön tai poista käytöstä tilastojen keruu
Käytä joko istuntokonfiguraatiota (työtila tai muistikirjan laajuus) tai taulun ominaisuuksia (taulukkokohtainen laajuus).
Istunnon määrittäminen
Voit ottaa käyttöön tai poistaa käytöstä laajennetun tilastokokoelman ja optimointitoiminnon lisäämisen istuntotasolla.
Näitä asetuksia voi soveltaa Spark SQL:n, PySparkin tai Scala Sparkin kautta.
- Spark SQL
- PySpark
- Skalaa spark
Suorita seuraavat Spark SQL -lauseet aktivoidaksesi keräyksen ja optimointiinjektion:
SET spark.microsoft.delta.stats.collect.extended=true;
SET spark.microsoft.delta.stats.injection.enabled=true;
Poistaaksesi kummankin asetuksen, käytä samaa komentoa, jonka arvo on falseasetettu .
Huomautus
Myös deltalokitilastojen kokoelman (spark.databricks.delta.stats.collect) on oltava käytössä (oletusarvo: true).
Tärkeää
Jos otat poistovektorit käyttöön taulukossa, poista tilastojen injektio käytöstä kyseisessä taulukossa. Tauluissa, joissa käytetään poistovektoreita, joissa päivitetään tai poistataan usein, laajennetut tilastot voivat muuttua epätarkkoiksi ja saada Sparkin aliarvioimaan taulun koon. Kun näin tapahtuu, optimoija saattaa valita lähetysliitoksen, joka ei ole sopiva, mikä voi aiheuttaa kyselyjen epäonnistumisen. Tämän käyttäytymisen estämiseksi poista tilastojen injektio käytöstä, jotta optimointilaite ei käytä injektoituja tilastoja:
- Istunnon laajuus: asetettu
spark.microsoft.delta.stats.injection.enabledarvoonfalse. - Taulun laajuus: aseta taulun
delta.stats.extended.injectominaisuus arvoonfalse.
Voit pitää tilastojen keruun päällä. Taulukoissa, jotka käyttävät poistovektoreita, poista vain injektio optimoijaan.
Säännöllinen pöydän ylläpitostrategia vähentää tätä riskiä.
OPTIMIZE poistaa automaattisesti tiedostot, joissa yli 5% rivejä viitataan poistovektoreilla, ja REORG TABLE ... APPLY (PURGE) voi pakottaa uudelleenkirjoituksen alle tämän kynnyksen. Koska laajennetut tilastot kerätään kirjoitusaikana, uudelleenkirjoitus päivittää tilastot kyseisille tiedostoille. Tauluissa, joissa päivitetään tai poistetaan usein, pidä injektio pois päältä huoltosyklien välillä.
Taulun ominaisuudet (ohitetaan istunnon konfiguraatio)
Taulukon ominaisuuksien avulla voit hallita tilastotietojen kokoelmaa yksittäisissä taulukoissa ohittaen istunnon asetukset.
Ota käyttöön taulukossa:
ALTER TABLE tableName
SET TBLPROPERTIES(
'delta.stats.extended.collect' = 'true',
'delta.stats.extended.inject' = 'true'
)
Poistaaksesi jommankumman tauluominaisuuden käytöstä, aseta sen arvo false.
Taulukon luomisen oletuskäyttäytyminen
Käytä tätä istuntotason asetusta poistaaksesi käytöstä automaattinen leimaaminen laajennettujen tilastojen taulujen ominaisuuksille, kun uusia tauluja luodaan.
- Spark SQL
- PySpark
- Skalaa spark
Käytä tätä Spark SQL -lausetta poistaaksesi automaattisen asetuksen käytöstä taulun luomisessa:
SET spark.microsoft.delta.stats.collect.extended.property.setAtTableCreation=false;
Tarkista tilastot
Voit tarkastella optimoidun kyselysuunnitelman tilastoja käyttämällä Spark-rajapintoja. Nämä API:t palauttavat yleisiä liittymien tilastoja mistä tahansa saatavilla olevasta lähteestä, mukaan lukien Sparkin katalogitilastot. Tulos ei vahvista, että Fabric-laajennetut tilastot kerättiin taulukkoa varten.
Tarkista rivien määrä ja taulukon koko (Skalaa-esimerkki):
println(spark.read.table("tableName").queryExecution.optimizedPlan.stats)
Tarkista yksityiskohtaiset saraketilastot:
val stats = spark.read.table("tableName").queryExecution.optimizedPlan.stats
stats.attributeStats.foreach { case (attrName, colStat) =>
println(s"colName: $attrName distinctCount: ${colStat.distinctCount} min: ${colStat.min} max: ${colStat.max} nullCount: ${colStat.nullCount} avgLen: ${colStat.avgLen} maxLen: ${colStat.maxLen}")
}
Laske tilastot uudelleen
Tilastot voivat vanhentua skeemamuutosten tai osittaisten päivitysten jälkeen. Käytä jotakin seuraavista menetelmistä laskeaksesi uudelleen.
Kirjoita taulukko uudelleen (huomautus: tämä nollaa historian):
spark.read.table("targetTable").write.partitionBy("partCol").mode("overwrite").saveAsTable("targetTable")
Suositeltu lähestymistapa (Fabric Spark >= 3.2.0.19):
from pyspark.sql.delta import StatisticsStore
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
Jos skeema muuttuu (esimerkiksi lisäät tai poistat sarakkeita), poista vanhat tilastot ennen uudelleenlaskentaa:
from pyspark.sql.delta import StatisticsStore
StatisticsStore.removeStatisticsData(spark, "testTable1")
StatisticsStore.recomputeStatisticsWithCompaction(spark, "testTable1")
Käytä ANALYZE TABLE
Käytetään ANALYZE TABLE Spark-katalogin tilastojen laskemiseen kaikissa sarakkeissa. Tämä komento ei laske uudelleen Automated Table Statisticsin tallentamia laajennettuja tilastoja. Näiden tilastojen uudelleenlaskemiseksi käytä StatisticsStore.recomputeStatisticsWithCompaction.
Suorita komento:
- Spark SQL
- PySpark
- Skalaa spark
Suorita seuraava Spark SQL -lause:
ANALYZE TABLE tableName COMPUTE STATISTICS FOR ALL COLUMNS
Ota käyttöön luettelon tilastotiedot:
- Spark SQL
- PySpark
- Skalaa spark
Käytä tätä Spark SQL -lausetta ottaaksesi käyttöön luettelotilastojen injektion:
SET spark.microsoft.delta.stats.injection.catalog.enabled=true;
Poistaaksesi katalogin tilastojen injektion, käytä samaa asetusta, jonka arvo on asetettu .false
Rajoitukset
On tärkeää ymmärtää Fabricin automatisoitujen tilastotietojen nykyiset rajoitukset, jotta voit suunnitella ne vastaavasti.
- Tilastot kerätään vain kirjoitushetkellä.
- Muiden moottoreiden päivityksiä ei yhdistetä automaattisesti.
- Mukana on vain ensimmäiset 32 saraketta (mukaan lukien sisäkkäiset sarakkeet).
- Poistot ja päivitykset voivat tehdä tilastoista vanhentuneita. Tauluissa, jotka käyttävät poistovektoreita, tavallinen
OPTIMIZEtaiREORG TABLE ... APPLY (PURGE)ylläpito kirjoittaa vaurioituneet tiedostot uudelleen ja päivittää niiden tilastot. Poista tilastojen injektio käytöstä huoltosyklien välillä tauluilla, joissa päivitetään tai poistataan säännöllisesti. - Uudelleenlaskenta vaatii uudelleenkirjoituksen tai tilastollisen API-toiminnon.
- Tilastojen injektio ei koske sisäkkäisiä sarakkeita.
- Joissakin työkuormissa vanhentuneet tai keskeneräiset tilastot voivat johtaa regressioihin.
-
ANALYZE TABLETuki on rajoitettu .FOR ALL COLUMNS - Sarakkeiden järjestys tai konfiguraatiomuutokset voivat vaatia täyden päivityksen.