Udostępnij za pośrednictwem


OPTIMIZE

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Optymalizuje układ danych usługi Delta Lake. Opcjonalnie zoptymalizuj podzbiór danych lub posuń dane według kolumny. Jeśli nie określisz kolokacji i tabela nie jest zdefiniowana przy użyciu klastrowania cieczy, optymalizacja pakowania bin jest wykonywana.

Składnia

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

Uwaga

  • Optymalizacja pakowania bin jest idempotentna, co oznacza, że jeśli jest uruchamiany dwa razy w tym samym zestawie danych, drugi przebieg nie ma wpływu. Ma na celu tworzenie równomiernie zrównoważonych plików danych w odniesieniu do ich rozmiaru na dysku, ale niekoniecznie liczby krotki na plik. Jednak te dwie miary są najczęściej skorelowane.
  • Porządkowanie Z nie jest idempotentne , ale ma być operacją przyrostową. Czas potrzebny na porządkowanie Z nie jest gwarantowany, aby zmniejszyć liczbę przebiegów. Jeśli jednak żadne nowe dane nie zostały dodane do partycji, która została po prostu zamówiona Z, kolejna kolejna kolejność Z tej partycji nie będzie miała żadnego wpływu. Ma na celu tworzenie równomiernie zrównoważonych plików danych w odniesieniu do liczby krotki, ale niekoniecznie rozmiaru danych na dysku. Te dwie miary są najczęściej skorelowane, ale mogą wystąpić sytuacje, gdy tak nie jest, co prowadzi do niesymetryczności w czasie optymalizacji zadań.

Uwaga

Podczas korzystania ze środowiska Databricks Runtime, aby kontrolować rozmiar pliku wyjściowego, ustaw konfigurację spark.databricks.delta.optimize.maxFileSizeplatformy Spark. Wartość domyślna to 1073741824, która ustawia rozmiar na 1 GB. Określenie wartości 104857600 powoduje ustawienie rozmiaru pliku na 100 MB.

Parametry

  • table_name

    Identyfikuje istniejącą tabelę delty. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji.

  • FULL

    Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks Runtime 16.0 i nowsze

    Zoptymalizuj całą tabelę, w tym dane, które mogły być wcześniej klastrowane. Tę klauzulę można określić tylko dla tabel korzystających z klastrowania płynnego.

  • WHERE

    Zoptymalizuj podzestaw wierszy pasujących do danego predykatu partycji. Obsługiwane są tylko filtry obejmujące atrybuty klucza partycji.

    Nie można użyć tej klauzuli w tabelach korzystających z klastrowania płynnego.

  • ZORDER BY

    Sortowanie informacji o kolumnach w tym samym zestawie plików. Współlokalność jest używana przez algorytmy pomijania danych usługi Delta Lake w celu znacznego zmniejszenia ilości danych, które należy odczytać. Można określić wiele kolumn jako ZORDER BY listę rozdzielaną przecinkami. Jednak skuteczność lokalizacji spada wraz z każdą dodatkową kolumną.

    Nie można użyć tej klauzuli w tabelach korzystających z klastrowania płynnego.

Przykłady

> OPTIMIZE events;

> OPTIMZIE events FULL;

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

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

Aby uzyskać więcej informacji na temat OPTIMIZE polecenia, zobacz Optymalizowanie układu pliku danych.