Udostępnij za pośrednictwem


Pomijanie danych w 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żywaj płynnego grupowania dla tabel.

Informacje o pomijaniu danych są zbierane automatycznie podczas zapisywania danych w tabeli Delta. 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śl kolumny statystyk Delta

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 Unity Catalog. Databricks zaleca włączenie optymalizacji predykcyjnej dla wszystkich tabel zarządzanych przez Unity Catalog, aby uprościć konserwację danych i zmniejszyć koszty przechowywania. Zobacz Optymalizację predykcyjną dla tabel zarządzanych przez Unity Catalog.

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 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. Zastępuje dataSkippingNumIndexedCols.

Właściwości tabeli można ustawić podczas tworzenia tabeli lub instrukcji ALTER TABLE . Zobacz Informacje o właściwościach tabeli delty. Poniższy przykład zastępuje domyślne zachowanie zbierania statystyk, aby ustawić zbieranie statystyk dla nazwanych kolumn.

ALTER TABLE table_name SET TBLPROPERTIES('delta.dataSkippingStatsColumns' = 'col1, col2, col3')

Aktualizowanie tych właściwości nie powoduje automatycznej ponownej kompilacji statystyk dla istniejących danych. Ma to wpływ na zachowanie przyszłego gromadzenia 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ądek Z?

Uwaga

Databricks zaleca używanie liquid clustering dla wszystkich nowych Tabel Delta. Nie można używać ZORDER w połączeniu z klastrowaniem płynnym. Zobacz Używaj płynnego grupowania dla tabel.

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ć. Aby uporządkować dane w porządku Z, należy określić kolumny do uporządkowania 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 wskazać wiele kolumn dla ZORDER BY jako listę rozdzielaną przecinkami. Jednak skuteczność lokalizacji spada z każdą dodatkową kolumną. Porządkowanie według Z dla kolumn, które nie mają zebranych statystyk, byłoby nieskuteczne i stratą zasobów. Wynika to z faktu, że pomijanie danych wymaga lokalnych statystyk kolumnowych, takich jak wartość minimalna, maksymalna oraz liczba wystąpień. 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 jest gwarantowany do zmniejszania się przy kolejnych uruchomieniach. 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 pod względem liczby krotek, 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.