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ě optimize podmnožinu dat nebo seskupit data pomocí column. Pokud nezadáte kolokaci a table není definováno pomocí shlukování kapalin, provede se optimalizace balení do přihrádek.

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 partition nepřidali žádná nová data, která byla pouze Z-Order, nebude mít žádný vliv další řazení Z této partition. 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 mohou nastat situace, kdy tomu tak není, což vede ke skreslení v časech úkolů optimize.

Poznámka:

Při použití Databricks Runtime ke kontrole velikosti výstupního souboru se používá konfigurace Spark setspark.databricks.delta.optimize.maxFileSize. Výchozí hodnota je 1073741824, která nastaví velikost na 1 GB. Zadáním hodnoty 104857600 nastavíte velikost souboru na 100 MB.

Parameters

  • table_name

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

  • FULL

    Platí pro: zaškrtněte políčko Ano Databricks Runtime 16.0 a novější

    Optimize celý table včetně dat, která byla dříve seskupována. Tuto klauzuli lze zadat pouze pro tables, které používají shlukování kapalin.

  • WHERE

    Optimize podmnožinu řádků odpovídajících danému predikátu partition. Podporují se pouze filtry zahrnující partition klíčové atributy.

    Tuto klauzuli nelze použít na tables, které používají shlukováníkapalin.

  • ZORDER BY

    Umístit column informací do stejného set 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. Můžete zadat více columns pro ZORDER BY jako list, oddělené čárkami. Účinnost lokality se však snižuje s každou další column.

    Tuto klauzuli nelze použít na tables, které používají shlukování kapalin .

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 OPTIMIZE naleznete v tématu Optimize rozložení datového souboru.