Pomijanie danych dla usługi Delta Lake
Uwaga
W środowisku Databricks Runtime 13.3 lub nowszym usługa Databricks zaleca używanie płynnego klastrowania dla układu tabeli delty. Klastrowanie nie jest zgodne z kolejnością Z. Zobacz Użyj płynnego klastrowania dla tabel typu Delta).
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ń.
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. Po włączeniu optymalizacji predykcyjnej statystyki pomijania plików są wybierane inteligentnie i nie są ograniczone do pierwszych 32 kolumn. Optymalizacja predykcyjna automatycznie uruchamia ANALYZE
polecenie służące do zbierania statystyk w tabelach zarządzanych przez wykaz aparatu Unity. Usługa Databricks zaleca włączenie optymalizacji predykcyjnej dla wszystkich tabel zarządzanych przez wykaz aparatu Unity, aby uprościć konserwację danych i zmniejszyć koszty magazynowania. Zobacz Optymalizacja predykcyjna dla tabel zarządzanych w wykazie aparatu Unity.
Ważne
Optymalizacja predykcyjna za pomocą ANALYZE
programu jest dostępna w publicznej wersji zapoznawczej. Obejmuje ona inteligentne zbieranie statystyk podczas zapisu. Użyj tego formularza , aby zarejestrować się w publicznej wersji zapoznawczej.
Jeśli nie używasz optymalizacji predykcyjnej, możesz zmodyfikować zachowanie, które ogranicza kolekcje statystyk do 32 kolumn, 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 tych 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 lub nowszym, jeśli zmieniono właściwości tabeli lub zmieniono określone kolumny dla statystyk, możesz 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?
Uwaga
Usługa Databricks zaleca używanie płynnego klastrowania dla wszystkich nowych tabel delty. Nie można używać ZORDER
w połączeniu z klastrowaniem płynnym.
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.