OPTIMIZE

Vonatkozik:ellátott jelöléssel igen Databricks SQL ellátott jelöléssel igen Databricks Runtime

OPTIMIZE optimalizálja a Delta Lake-adatok elrendezését. Optimalizálhatja az adatok egy részhalmazát, vagy oszlop szerint csoportosíthatja az adatokat. Ha nem adja meg a rendezést, és a tábla nem használ folyékony fürtözést, a Delta Lake elvégzi a dobozok csomagolásának optimalizálását.

Szintaxis

OPTIMIZE table_name [FULL] [WHERE predicate]
  [ZORDER BY (col_name1 [, ...] ) ]

Feljegyzés

A dobozcsomagolás optimalizálása idempotens: ha kétszer futtatja ugyanazon az adatkészleten, a második futtatásnak nincs hatása. Egyenletesen kiegyensúlyozott adatfájlokat hoz létre a lemez méretétől függően, de nem feltétlenül a fájlonkénti uplok számát. A két mérték leggyakrabban korrelál.

A Z-Ordering nem idempotens, hanem növekményesen működik. A Z-Ordering időtartama nem garantáltan csökken több futtatás során. Ha azonban nem lett új adat hozzáadva egy csak Z-Ordered nevű partícióhoz, a Z-Ordering ismételt futtatása a partíción nincs hatással. A Z-Ordering egyenletesen kiegyensúlyozott adatfájlokat hoz létre a csuplok száma tekintetében, de nem feltétlenül lemezen lévő adatméretet. A két mérték leggyakrabban korrelál, de az optimalizált feladatidők eltérése akkor fordulhat elő, ha eltérnek egymástól.

Feljegyzés

A Databricks Runtime használatakor a kimeneti fájl méretének szabályozásához állítsa be a Spark-konfigurációtspark.databricks.delta.optimize.maxFileSize. Az alapértelmezett érték 1073741824 (1 GB). 104857600 A beállítás 100 MB-ra állítja a fájlméretet.

Paraméterek

  • table_name

    Egy meglévő Delta-táblát azonosít. A név nem tartalmazhat időbeli specifikációt vagy beállításspecifikációt.

  • FULL

    A következőkre vonatkozik: „igen” van bejelölve a Databricks Runtime 16.0 és újabb verziók esetén

    A tábla összes adatfájljának átírása. A következőhöz használható OPTIMIZE table_name FULL :

    • Optimalizálja a teljes táblázatot, beleértve a korábban fürtözött adatokat is ( folyékony fürtözést használó táblák esetében).
    • A meglévő adatfájlokat csomagolja újra, amikor a delta.parquet.compression.codec tulajdonság használatával megváltoztatja a tábla tömörítési kodekjét.

    A tömörítési kodek módosítása után a meglévő adatok újracsomagolásához futtassa a következőt OPTIMIZE table_name FULL:

    -- Change compression codec
    ALTER TABLE table_name SET TBLPROPERTIES ('delta.parquet.compression.codec' = 'ZSTD');
    
    -- Recompress all existing data files
    OPTIMIZE table_name FULL;
    

    Ha egy táblában lévő fájlok egy részhalmazát szeretné optimalizálni, és engedélyezve van a folyékony fürtözés, kombináljon FULL egy WHERE predikátummal (Databricks Runtime 18.1 vagy újabb). Csak egyetlen fürtoszlop egyszerű tartomány-predikátumai támogatottak. A fájl akkor szerepel a fájlban, ha tartományának bármely része átfedésben van a predikátummal. Tartalmaz például egy tartományt OPTIMIZE events FULL WHERE date > 15 tartalmazó fájlt, (col_min = 10, col_max = 20) mert a fájl tartománya átfedésben van a predikátummal.

  • WHERE

    Optimalizálja a partíció/fürtözési predikátumnak megfelelő sorok részhalmazát. Csak a partíció/ fürtszolgáltatás kulcsattribútumainak szűrői támogatottak.

    Folyékony fürtözést használó táblák esetén használja OPTIMIZE table_name FULL WHERE predicate inkább a (Databricks Runtime 18.1 vagy újabb) elemet.

  • ZORDER BY

    Feljegyzés

    A Databricks a Z-rendezés helyett az összes új táblához javasolja a folyékony fürtözést. Lásd: Táblákhoz folyékony klaszterezés használata.

    Az oszlopinformációkat ugyanabban a fájlkészletben rendezi. A Delta Lake adat-kihagyási algoritmusai a közös helység használatával csökkentik az olvasandó adatok mennyiségét. Vesszővel tagolt listaként több oszlopot is megadhat, de a közös helység hatékonysága minden további oszlop esetében csökken.

    Ez a záradék folyékony fürtözést használó táblákon nem használható.

Példák

> OPTIMIZE events;

> OPTIMIZE events FULL;

> -- Partitioned table
> OPTIMIZE events WHERE date >= '2017-01-01';

> -- Table with liquid clustering enabled (DBR 18.1 and above)
> OPTIMIZE events FULL WHERE date >= '2025-01-01';

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

További információ: Adatfájlelrendezés optimalizálása.