Adatok kihagyása

Note

A Databricks Runtime 13.3-at vagy újabb verzióját használva a Databricks folyékony fürtözés használatát javasolja a táblázatelrendezéshez. A fürtözés nem kompatibilis a Z-rendezéssel. Lásd: Táblákhoz folyékony klaszterezés használata.

Az adatátugrási statisztikákat a rendszer automatikusan gyűjti, amikor adatokat ír egy Delta Lake- vagy felügyelt Apache Iceberg-táblába. Azure Databricks fájlonkénti statisztikákat (minimális és maximális értékeket, null értékeket és összes rekordot) használ a lekérdezési időpontban, hogy kihagyja az irreleváns fájlokat, és felgyorsítsa a lekérdezéseket.

A ZORDER utasításokban használt oszlopokra vonatkozó statisztikákat kell gyűjtenie. Lásd : Mi az a Z-rendelés?.

Statisztikai oszlopok megadása

A Unity Catalog külső táblái esetében a rendszer alapértelmezés szerint a táblázatsémában definiált első 32 oszlopra gyűjti a statisztikákat. A Unity Catalog által felügyelt táblák esetében a fájlkiugrás statisztikái intelligensen, prediktív optimalizálással vannak kiválasztva, és nem rendelkeznek 32 oszlopkorláttal. A prediktív optimalizálás automatikusan fut ANALYZE– ez a statisztika gyűjtésére szolgáló parancs. A Databricks azt javasolja, hogy engedélyezze az összes Unity Catalog által felügyelt tábla prediktív optimalizálását az adatkarbantartás egyszerűsítése és a tárolási költségek csökkentése érdekében. Lásd: A Unity Catalog által felügyelt táblák prediktív optimalizálása.

Ha nem használ prediktív optimalizálást, módosíthatja azt a viselkedést, amely a statisztikai gyűjteményeket 32 oszlopra korlátozza az alábbi táblázattulajdonságok egyikének beállításával:

Tábla tulajdonság A Databricks Runtime támogatott Description
dataSkippingNumIndexedCols Minden támogatott Databricks Runtime verzió Növelje vagy csökkentse azoknak az oszlopoknak a számát, amelyeken a statisztikákat gyűjti. Az oszlopsorrendtől függ.
dataSkippingStatsColumns Databricks Runtime 13.3 LTS és újabb verziók Adja meg azoknak az oszlopneveknek a listáját, amelyekhez statisztikákat gyűjtenek. Felülírja dataSkippingNumIndexedCols.

A táblatulajdonságok beállíthatók tábla létrehozásakor vagy ALTER TABLE utasításokkal. Lásd Táblázatulajdonságok hivatkozása. Az alábbi példa felülbírálja az alapértelmezett statisztikagyűjtési viselkedést, hogy statisztikagyűjtést állítson be a megnevezett oszlopokon.

Delta-tó

ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')

Iceberg-tábla

ALTER TABLE table_name SET TBLPROPERTIES('iceberg.dataSkippingStatsColumns' = 'col1, col2, col3')

Ezeknek a tulajdonságoknak a frissítése nem számolja újra automatikusan a meglévő adatokhoz tartozó statisztikákat. Ez inkább befolyásolja a jövőbeli statisztikák gyűjtésének viselkedését, amikor adatokat ad hozzá vagy frissít a táblában. A statisztikák nem használhatók olyan oszlopokhoz, amelyek nem szerepelnek az aktuális statisztikai oszlopok listájában.

A Databricks Runtime 14.3 LTS és újabb verzióiban, ha módosította a tábla tulajdonságait, vagy módosította a megadott oszlopokat a statisztikákhoz, manuálisan aktiválhatja a táblák statisztikáinak újraszámítását az alábbi paranccsal:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Note

A statisztikai adatgyűjtés során a hosszú karakterláncok levágásra kerülnek. Dönthet úgy, hogy kizárja a hosszú sztringoszlopokat a statisztikai gyűjteményből, különösen akkor, ha az oszlopokat nem használják gyakran lekérdezések szűrésére.

Mi az a Z-rendelés?

Note

A Databricks azt ajánlja, hogy minden új táblához használjuk a folyékony csoportosítást. A(z) ZORDER nem használható együtt a folyékony klaszterezéssel. Lásd: Táblákhoz folyékony klaszterezés használata.

A Z-rendezés egy technika, amely lehetővé teszi a kapcsolódó információk azonos fájlkészletben való elhelyezését. Az Azure Databricks adatkihagyási algoritmusai automatikusan használják ezt a lokalitást. Ez a viselkedés csökkenti az olvasandó adatok mennyiségét. Az adatok Z-rendezéséhez adja meg a rendezendő oszlopokat a ZORDER BY záradékban.

OPTIMIZE events
WHERE date >= current_timestamp() - INTERVAL 1 day
ZORDER BY (eventType)

Ha arra számít, hogy egy oszlopot gyakran használnak a lekérdezési predikátumokban, és ha az oszlop nagy számossággal rendelkezik (azaz nagy számú különböző érték), akkor használja a ZORDER BY.

Több oszlopot is megadhat ZORDER BY vesszővel tagolt listaként. A hatékonyság azonban minden további oszlopnál csökken.

A Databricks azt javasolja, hogy ne használjon ZORDER BY olyan oszlopokat, amelyek nem gyűjtenek statisztikákat, mert nem hatékonyak, és szükségtelen számítási erőforrásokat használnak. Az adatátugráshoz oszlop helyi statisztikára van szükség, például min, max és darabszám. Bizonyos oszlopok statisztikáinak gyűjtését konfigurálhatja a séma oszlopainak átrendezésével, vagy növelheti az oszlopok számát a statisztikák gyűjtéséhez.

Note

  • A Z-rendezés nem idempotens, de célja, hogy növekményes művelet legyen. Nem garantált, hogy a Z-rendezéshez szükséges idő több futtatás során csökken. Ha azonban nem adtak hozzá új adatokat egy csak Z sorrendben rendezett partícióhoz, a partíció egy másik Z-rendezési műveletének nincs hatása.

  • A Z-rendezés arra törekszik, hogy a tuple-ök száma szempontjából egyenletesen kiegyensúlyozott adatfájlokat hozzon létre, de ez nem feltétlenül vonatkozik a tárolt adatok méretére. Bár a fájlméret és a rekordok száma összefügg, előfordulhatnak olyan helyzetek, amikor ez nincs így, ami torzíthatja az optimalizálási feladatok futási idejét.

    Ha például ZORDER BYdate, és a legutóbbi rekordok sokkal szélesebbek (például hosszabb tömbök vagy sztringértékek), mint a korábbiak, akkor a OPTIMIZE feladat időtartamai és az ebből eredő fájlméretek torzulhatnak. Ez azonban csak magának a parancsnak a OPTIMIZE problémája; valószínűleg nincs negatív hatása a későbbi lekérdezésekre.