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 optimize podzbiór danych lub sortowanie danych przez column. Jeśli nie określisz kolokacji, a table nie jest zdefiniowana w przypadku 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 do partition, które właśnie zostało uporządkowane za pomocą Z-Order, nie dodano żadnych nowych danych, kolejne uporządkowanie Z-Order dla tego partition nie będzie miało ż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. Dwie miary są najczęściej skorelowane, ale mogą wystąpić sytuacje, gdy tak nie jest, co prowadzi do zniekształcenia czasów zadań optimize.

Uwaga

Używając środowiska Databricks Runtime, aby kontrolować rozmiar pliku wyjściowego, setkonfiguracji Sparkspark.databricks.delta.optimize.maxFileSize. Wartość domyślna to 1073741824, która ustawia rozmiar na 1 GB. Określenie wartości 104857600 powoduje ustawienie rozmiaru pliku na 100 MB.

Parameters

  • table_name

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

  • FULL

    Dotyczy: zaznaczone tak Databricks Runtime 16.0 lub nowsze

    Optimize całe table, w tym dane, które mogły wcześniej zostać klastrowane. Tę klauzulę można określić tylko dla tables, które używają klastrowania płynnego.

  • WHERE

    Optimize podzestaw wierszy pasujących do danego predykatu partition. Obsługiwane są tylko filtry dotyczące atrybutów klucza partition.

    Nie można używać tej klauzuli w tables, które używają klastrowania płynu .

  • ZORDER BY

    Umieść informacje column w tej samej jednostce set 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żesz określić wiele columns dla ZORDER BY jako oddzieloną przecinkami list. Jednak skuteczność miejscowości zmniejsza się wraz z każdym dodatkowym column.

    Nie można użyć tej klauzuli w tables, które stosują klastrowanie płynów .

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 polecenia OPTIMIZE, zobacz Optimize układ pliku danych.