OPTIMIZE

Dotyczy:check marked yes Databricks SQL check marked yes 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 [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 z środowiska Databricks Runtime, aby kontrolować rozmiar pliku wyjściowego, ustaw konfiguracjęspark.databricks.delta.optimize.maxFileSize platformy 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

  • Nazwa_tabeli

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

  • 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;

> 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 polecenia, zobacz Kompaktowanie OPTIMIZE plików danych przy użyciu optymalizacji w usłudze Delta Lake.