Sdílet prostřednictvím


OPTIMIZE

Platí pro: zaškrtnutí označeného ano Databricks SQL zaškrtnutí označeného ano Databricks Runtime

Optimalizuje rozložení dat Delta Lake. Volitelně můžete optimalizovat podmnožinu dat nebo kolaciovat data podle sloupce. Pokud nezadáte kolokaci a tabulka není definována pomocí clusteringu liquid, provede se optimalizace při balení přihrádky.

Syntaxe

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

Poznámka:

  • Optimalizace při balení přihrádky je idempotentní, což znamená, že pokud je spuštěna dvakrát ve stejné datové sadě, druhé spuštění nemá žádný vliv. Cílem je vytvořit rovnoměrně vyvážené datové soubory s ohledem na jejich velikost na disku, ale nemusí nutně počet řazených kolekcí členů na soubor. Tyto dvě míry ale nejčastěji korelují.
  • Pořadí Z-Ordering není idempotentní , ale má být přírůstkovou operací. Doba, po které trvá řazení Z, není zaručeno, že se sníží více spuštění. Pokud se ale do oddílu, který byl jen Z-Order, nepřidali žádná nová data, nebude mít další řazení Z tohoto oddílu žádný vliv. Cílem je vytvořit rovnoměrně vyvážené datové soubory s ohledem na počet řazených kolekcí členů, ale ne nutně velikost dat na disku. Dvě míry jsou nejčastěji korelovány, ale v situacích, kdy tomu tak není, což vede k nerovnoměrné distribuci v době optimalizace úloh.

Poznámka:

Při použití Databricks Runtime k řízení velikosti výstupního souboru nastavte konfiguraci spark.databricks.delta.optimize.maxFileSizeSparku . Výchozí hodnota je 1073741824, která nastaví velikost na 1 GB. Zadáním hodnoty 104857600 nastavíte velikost souboru na 100 MB.

Parametry

  • table_name

    Identifikuje existující tabulku Delta. Název nesmí obsahovat dočasnou specifikaci ani specifikaci možností.

  • FULL

    Platí pro: zaškrtnutí označeného ano Databricks Runtime 16.0 a novější

    Optimalizujte celou tabulku včetně dat, která byla dříve seskupována. Tuto klauzuli lze zadat pouze pro tabulky, které používají clustering liquid.

  • WHERE

    Optimalizujte podmnožinu řádků odpovídajících danému predikátu oddílu. Podporují se pouze filtry zahrnující atributy klíče oddílu.

    Tuto klauzuli nelze použít u tabulek, které používají clustering liquid.

  • ZORDER BY

    Shromážděte informace o sloupci ve stejné sadě souborů. Společné umístění používají algoritmy Delta Lake pro přeskakování dat k výraznému snížení množství dat, která je potřeba číst. Jako seznam oddělený čárkami můžete zadat více sloupců ZORDER BY . Efektivita lokality se ale snižuje s každým dalším sloupcem.

    Tuto klauzuli nelze použít u tabulek, které používají clustering liquid.

Příklady

> OPTIMIZE events;

> OPTIMZIE events FULL;

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

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

Další informace o příkazu naleznete v tématu Optimalizace rozložení datového OPTIMIZE souboru.