OPTIMIZE
Dotyczy: Databricks SQL 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.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
-
Identyfikuje istniejącą tabelę delty. Nazwa nie może zawierać specyfikacji czasowej ani specyfikacji opcji.
FULL
Dotyczy: 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.