Pomijanie danych dla usługi Delta Lake

Informacje pomijania danych są zbierane automatycznie podczas zapisywania danych w tabeli delty. Usługa Delta Lake w usłudze Azure Databricks korzysta z tych informacji (minimalnych i maksymalnych wartości, liczby wartości null i łącznych rekordów na plik) w czasie wykonywania zapytań w celu zapewnienia szybszych zapytań.

Uwaga

W środowisku Databricks Runtime 13.3 lub nowszym usługa Databricks zaleca używanie klastrowania dla układu tabeli delty. Klastrowanie nie jest zgodne z kolejnością Z. Zobacz Użyj płynnego klastrowania dla tabel typu Delta).

Musisz mieć zebrane statystyki dla kolumn używanych w ZORDER instrukcjach. Zobacz Co to jest porządkowanie Z?.

Określanie kolumn statystyk różnicowych

Domyślnie usługa Delta Lake zbiera statystyki dotyczące pierwszych 32 kolumn zdefiniowanych w schemacie tabeli. W przypadku tej kolekcji każde pole w kolumnie zagnieżdżonej jest uznawane za pojedynczą kolumnę. To zachowanie można zmodyfikować, ustawiając jedną z następujących właściwości tabeli:

Właściwość tabeli Obsługiwane środowisko Uruchomieniowe usługi Databricks opis
delta.dataSkippingNumIndexedCols Wszystkie obsługiwane wersje środowiska Databricks Runtime Zwiększ lub zmniejsz liczbę kolumn, na których funkcja Delta zbiera statystyki. Zależy od kolejności kolumn.
delta.dataSkippingStatsColumns Databricks Runtime 13.3 LTS i nowsze Określ listę nazw kolumn, dla których usługa Delta Lake zbiera statystyki. dataSkippingNumIndexedColsZastępuje .

Właściwości tabeli można ustawić podczas tworzenia tabeli lub instrukcji ALTER TABLE . Zobacz Informacje o właściwościach tabeli delty.

Aktualizowanie tej właściwości nie powoduje automatycznej ponownej kompilacji statystyk dla istniejących danych. Zamiast tego ma to wpływ na zachowanie przyszłej kolekcji statystyk podczas dodawania lub aktualizowania danych w tabeli. Usługa Delta Lake nie wykorzystuje statystyk dla kolumn, które nie są uwzględnione na bieżącej liście kolumn statystyk.

W środowisku Databricks Runtime 14.3 LTS i nowszym można ręcznie wyzwolić ponowną kompilację statystyk dla tabeli delty przy użyciu następującego polecenia:

ANALYZE TABLE table_name COMPUTE DELTA STATISTICS

Uwaga

Długie ciągi są obcinane podczas zbierania statystyk. Możesz wykluczyć długie kolumny ciągów z kolekcji statystyk, zwłaszcza jeśli kolumny nie są często używane do filtrowania zapytań.

Co to jest porządkowanie Z?

Porządkowanie Z to technika kolokowania powiązanych informacji w tym samym zestawie plików. Ta współlokalność jest automatycznie używana przez usługę Delta Lake w algorytmach pomijania danych usługi Azure Databricks. To zachowanie znacznie zmniejsza ilość danych, które usługa Delta Lake w usłudze Azure Databricks musi odczytywać. W przypadku danych zamówienia Z należy określić kolumny do kolejności w klauzuli ZORDER BY :

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

Jeśli oczekujesz, że kolumna będzie często używana w predykatach zapytań, a jeśli ta kolumna ma wysoką kardynalność (czyli dużą liczbę unikatowych wartości), użyj polecenia ZORDER BY.

Można określić wiele kolumn jako ZORDER BY listę rozdzielaną przecinkami. Jednak skuteczność lokalizacji spada z każdą dodatkową kolumną. Porządkowanie Z dla kolumn, które nie mają zebranych statystyk, byłoby nieskuteczne i marnowanie zasobów. Wynika to z faktu, że pomijanie danych wymaga statystyk lokalnych kolumn, takich jak minimalna, maksymalna i liczba. Zbieranie statystyk dla niektórych kolumn można skonfigurować, zmieniając kolejność kolumn w schemacie lub zwiększając liczbę kolumn w celu zbierania statystyk.

Uwaga

  • Porządkowanie Z nie jest idempotentne , ale ma być operacją przyrostową. Czas potrzebny na porządkowanie Z nie ma gwarancji zmniejszenia liczby przebiegów. Jeśli jednak żadne nowe dane nie zostały dodane do partycji, która została po prostu uporządkowana w formacie Z, kolejna kolejność Z tej partycji nie będzie miała żadnego wpływu.

  • Porządkowanie Z 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ń.

    Jeśli na przykład ZORDER BYdata i najnowsze rekordy są znacznie szersze (na przykład dłuższe tablice lub wartości ciągów) niż te w przeszłości, oczekuje się, że OPTIMIZE czasy trwania zadań zadania zostaną wypaczone, a także wynikowe rozmiary plików. Jest to jednak problem tylko dla OPTIMIZE samego polecenia; nie powinien mieć żadnego negatywnego wpływu na kolejne zapytania.