Megosztás a következőn keresztül:


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 BYdá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 a OPTIMIZE feladat időtartama el lesz varrva, valamint az eredményül kapott fájlméretek. Ez azonban csak magának a parancsnak a OPTIMIZE problémája, nem lehet negatív hatással a későbbi lekérdezésekre.