Zalecenia dotyczące optymalizacji dotyczące Azure Databricks

Wolne zapytania i wysokie koszty obliczeniowe zwykle wynikają z kilku podstawowych przyczyn: odczytania większej ilości danych niż potrzebuje zapytanie, przesuwania danych między węzłami, wyboru złego planu zapytań lub przepisywania plików, które się nie zmieniły. Azure Databricks automatycznie eliminuje wiele z tych przyczyn w obciążeniach od wielkoskalowego przetwarzania ETL po ad-hoc, interaktywne zapytania. Inne optymalizacje działają tylko wtedy, gdy je włączysz lub dostosujesz do konkretnego obciążenia.

Ta strona zaczyna się od rekomendacji dla większości obciążeń, następnie grupuje optymalizacje według tego, czy uruchamiają się automatycznie lub wymagają ich konfiguracji, oraz opisuje problem, który każda z nich rozwiązuje. Większość optymalizacji Databricks Runtime wymaga Delta Lake, domyślnego formatu tabel w Azure Databricks.

Zacznij od tych rekomendacji

Te wybory przynoszą największe korzyści wydajnościowe dla większości obciążeń. Pomagają też wielu automatycznym optymalizacjom na tej stronie działać z pełną skutecznością.

  • Do układu tabel używaj klasteryzacji płynnej.Klasteryzacja płynna zastępuje podziały tabel i ZORDER. Organizuje dane według kolumn, które często filtrujesz, co poprawia data skipping i dynamiczne odrzucanie plików.
  • Korzystaj z zarządzanych tabel Unity Catalog.Optymalizacja predykcyjna automatycznie utrzymuje zarządzane tabele. Zobacz tabele zarządzane w Unity Catalog dla Delta Lake i Apache Iceberg.
  • Użyj środowiska obliczeniowego Photon-enabled. Predykcyjne I/O wymaga Photon, podobnie jak dynamiczne przycinanie plików w instrukcjach MERGE, UPDATE oraz DELETE. Zobacz Co to jest Photon?.
  • Włącz wektory usuwania. Predictive I/O używa wektorów usuwania, aby uniknąć przepisywania całych plików podczas aktualizacji, usuwania i scalania, a współbieżność na poziomie wierszy ich wymaga. W tabelach Delta Lake musisz wyraźnie włączyć wektory usuwania. Zobacz Wektory usuwania w usłudze Databricks.
  • Użyj najnowszego Databricks Runtime. Nowe wersje zawierają najnowsze ulepszenia wydajności. Niektóre optymalizacje wymagają minimalnej wersji Databricks Runtime lub obliczeń z obsługą Photon. Sprawdź wymagania na każdej stronie.

Optymalizacje automatyczne

Te optymalizacje są domyślnie włączone. Nie musisz ich włączać, ale niektóre przynoszą większe korzyści, gdy tabele i obliczenia spełniają określone warunki, takie jak korzystanie z Photon lub aktualizowanie statystyk tabel.

  • Bufor na dysku: Przyspiesza zapytania, które wielokrotnie odczytują te same zdalne pliki danych Parquet i Delta Lake. Azure Databricks buforuje kopie plików na lokalnej pamięci masowej węzłów obliczeniowych, aby późniejsze odczyty mogły być wykonywane lokalnie. Azure Databricks automatycznie to włącza na typach instancji worker, które go obsługują.
  • Dynamiczne przycinanie plików: Pomija pliki, które nie mogą zawierać pasujących wierszy w złączeniach w tabelach Delta Lake. MERGE, UPDATE i DELETE instrukcje wymagają obliczeń z obsługą Photon do dynamicznego przycinania plików.
  • Low shuffle merge: Przyspiesza MERGE operacje aktualizacji lub usunięcia kilku wierszy w każdym pliku. Low shuffle merge przetwarza niezmodyfikowane wiersze bez tasowania i zachowuje ich istniejący układ danych.
  • Adaptacyjne wykonywanie zapytań: Ponownie optymalizuje plany zapytań podczas ich wykonywania, w oparciu o rzeczywisty rozmiar danych. To naprawia powolne strategie łączenia, zbyt wiele małych zadań oraz nierównomiernie obciążone zadania wynikające z niedokładnych szacunków.
  • Predictive I/O: Przyspiesza skanowanie danych i zmniejsza ilość danych przepisywanych podczas aktualizacji, usuwania i łączenia w zasobach obliczeniowych z obsługą Photon.
  • Optymalizator oparty na kosztach: Wykorzystuje statystyki tabel i kolumn do wyboru efektywnych planów zapytań, zwłaszcza dla zapytań z wieloma złączeniami. Optymalizator oparty na kosztach opiera się na statystykach, więc zbieraj je i aktualizuj.
  • Predykcyjna optymalizacja: Automatycznie uruchamia OPTIMIZE, VACUUM i ANALYZE na tabelach zarządzanych przez Unity Catalog, więc nie musisz planować konserwacji tabel. Utrzymuje również aktualne statystyki wykorzystywane przez optymalizator oparty na kosztach. Aby sprawdzić, czy optymalizacja predykcyjna jest włączona dla Twojego konta, zobacz Sprawdź, czy optymalizacja predykcyjna jest włączona.

Optymalizacje, które konfigurujesz

Te optymalizacje wymagają ich włączenia, dostrojenia lub zmiany konfiguracji tabel. Używaj ich, gdy obciążenie wymaga zachowań, których ustawienia domyślne nie pokrywają.

  • Wsparcie archiwalne: Stosuj, gdy polityki cyklu życia chmury przenoszą starsze pliki tabel do warstw archiwalnych, aby zmniejszyć koszty przechowywania. Obsługa archiwizacji mówi Azure Databricks, aby ignorował pliki starsze niż określony okres, aby polityka cyklu życia nie psuła zapytań odczytujących tylko najnowsze dane. Ta funkcja jest dostępna w publicznej wersji zapoznawczej.
  • Range join: Używaj, gdy łączenia używają punktu należącego do przedziału lub warunku nakładania się przedziałów. Databricks SQL automatycznie optymalizuje złączenia zakresowe. W innych środowiskach obliczeniowych dostosuj połączenia zakresowe za pomocą hintów łączenia lub konfiguracji sesji.
  • Poziomy izolacji i konflikty zapisu: Stosuj, gdy współbieżne zapisy do tej samej tabeli powodują konflikt lub gdy obciążenie wymaga bardziej rygorystycznych gwarancji niż domyślny poziom izolacji WriteSerializable. Izolacja serializowalna zmniejsza przepustowość dla jednoczesnych zapisów. Współbieżność na poziomie wiersza automatycznie rozwiązuje wiele konfliktów między współbieżnymi zapisami w tabelach spełniających wymagania tej funkcji.
  • Indeksy wyszukiwania pełnotekstowego: Używane, gdy zapytania przeszukują kolumny tekstowe pod kątem podciągów lub słów za pomocą funkcji search lub isearch. Indeks pomija pliki, które nie mogą zawierać pasujących wierszy. Ta funkcja jest dostępna w wersji beta.

Uwaga

Indeksy filtrów Bloom to przestarzała funkcja pomijania danych. Dodają narzut zapisu i trudno je dostroić. Jeśli Twoje tabele je mają, zobacz indeksy filtrów Bloom (przestarzałe), aby je zastąpić i usunąć.

Inne cechy wydajnościowe

  • Funkcje wyższego rzędu mają wbudowaną, zoptymalizowaną wydajność dla wielu operacji, które nie mają standardowych operatorów Spark. Funkcje wyższego rzędu działają lepiej niż funkcje definiowane przez użytkownika.
  • Azure Databricks posiada wbudowane operatory i specjalną składnię do pracy ze złożonymi typami danych, w tym tablicami, strukturami i łańcuchami JSON.
  • Spark SQL zapytuje ciągi JSON bez ich wcześniejszego parsowania.
  • Aby kontrolować rozmiar plików danych, które powstają podczas operacji zapisu, zobacz Kontroluj rozmiar pliku danych.
  • W przewodnikach dotyczących projektowania tabel i konserwacji zobacz Najlepsze praktyki: Delta Lake.

Diagnozuj wolne lub kosztowne obciążenia

Jeśli obciążenie jest wolniejsze lub droższe niż się spodziewasz, a nie wiesz dlaczego, użyj interfejsu Spark, aby znaleźć wąskie gardło przed zmianą konfiguracji. Zobacz Diagnozuj problemy z kosztami i wydajnością w interfejsie Spark.