Adatátugrás a Delta Lake-hez
Feljegyzés
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 Delta-táblaelrendezéshez. A fürtözés nem kompatibilis a Z-rendezéssel. Lásd a folyékony fürtözés alkalmazását Delta-táblákhoz.
A rendszer automatikusan összegyűjti az adatkihagyási információkat, amikor adatot ír egy Delta táblába. A Delta Lake az Azure Databricksen a lekérdezési időben kihasználja ezeket az információkat (minimális és maximális értékek, null értékek és fájlonkénti összes rekord) a gyorsabb lekérdezés érdekében.
A ZORDER
utasításokban használt oszlopokra vonatkozó statisztikákat kell gyűjtenie. Lásd : Mi az a Z-rendelés?.
Delta-statisztikai oszlopok megadása
A Delta Lake alapértelmezés szerint a táblasémában definiált első 32 oszlop statisztikáit gyűjti. Ha engedélyezve van a prediktív optimalizálás, a rendszer intelligensen választja ki a fájlugrási statisztikákat, és nem korlátozódik az első 32 oszlopra. A prediktív optimalizálás automatikusan futtatja a ANALYZE
, amely a statisztikák gyűjtésére szolgáló parancs, a Unity Catalog által felügyelt táblákon. 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áblázattulajdonság | A Databricks Runtime támogatott | Leírás |
---|---|---|
delta.dataSkippingNumIndexedCols |
Minden támogatott Databricks Runtime-verzió | Növelje vagy csökkentse azon oszlopok számát, amelyeken a Delta statisztikákat gyűjt. Az oszlopsorrendtől függ. |
delta.dataSkippingStatsColumns |
Databricks Runtime 13.3 LTS és újabb verziók | Adja meg azoknak az oszlopneveknek a listáját, amelyekhez a Delta Lake statisztikákat gyűjt. 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 Delta-tábla tulajdonságaira vonatkozó referencia.
A tulajdonságok frissítése nem jelenti automatikusan a meglévő adatok statisztikáinak újrafordítását. 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 Delta Lake nem használja az aktuális statisztikai oszlopok listájában nem szereplő oszlopok statisztikáit.
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 egy Delta-tábla statisztikáinak újraszámítását az alábbi paranccsal:
ANALYZE TABLE table_name COMPUTE DELTA STATISTICS
Feljegyzés
A statisztikai adatgyűjtés során a hosszú sztringek csonkulnak. 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?
Feljegyzés
A Databricks azt javasolja, hogy az összes új Delta-táblához használjuk a folyékony fürtözést. Folyékony fürtözéssel együtt nem használható ZORDER
. Lásd A Delta-táblákfolyékony fürtözésének használata című témakört.
A Z-rendezés egy technika, amely lehetővé teszi a kapcsolódó információk azonos fájlkészletben való elhelyezését. Ezt a közös helységet a Delta Lake automatikusan használja az Azure Databricks adat-kihagyó algoritmusainál. Ez a viselkedés jelentősen csökkenti az Azure Databricks delta lake-beli olvasási adatmennyiségét. A Z-rendelési adatokhoz a ZORDER BY
záradékban adja meg a sorrendbe rendezendő oszlopokat:
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
.
Vesszővel tagolt listaként több oszlopot is megadhat ZORDER BY
. A lokalitás hatékonysága azonban minden további oszloppal csökken. A Z-rendezés olyan oszlopokon, amelyeken nem gyűjtenek statisztikákat, hatástalan lenne, és erőforrás-pazarlás lenne. Ennek az az oka, hogy az adatátugráshoz oszlopon belüli 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.
Feljegyzés
A Z-rendezés nem idempotens , hanem növekményes művelet. A Z-rendeléshez szükséges idő nem garantált, hogy több futtatáson keresztül csökkenjen. Ha azonban nem ad hozzá új adatokat egy csak Z sorrendben rendezett partícióhoz, a partíció egy másik Z sorrendbe helyezése nem lesz hatással.
A Z-rendezés célja, hogy egyenletesen kiegyensúlyozott adatfájlokat állíthasson elő a csuplok száma tekintetében, de nem feltétlenül lemezen lévő adatméretet. A két mutató leggyakrabban korrelál, de előfordulhatnak olyan helyzetek, amikor ez nem így van, ami torzulást okozhat az optimalizálási feladatok idejében.
Ha például
ZORDER BY
dátum, és a legutóbbi rekordok mind sokkal szélesebbek (például hosszabb tömbök vagy sztringértékek), mint a korábbiak, akkor várhatóan aOPTIMIZE
feladat időtartama el lesz varrva, valamint az eredményül kapott fájlméretek. Ez azonban csak magának a parancsnak aOPTIMIZE
problémája, nem lehet negatív hatással a későbbi lekérdezésekre.