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. dataSkippingNumIndexedCols Zastę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 BY
data 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ę, żeOPTIMIZE
czasy trwania zadań zadania zostaną wypaczone, a także wynikowe rozmiary plików. Jest to jednak problem tylko dlaOPTIMIZE
samego polecenia; nie powinien mieć żadnego negatywnego wpływu na kolejne zapytania.