Udostępnij przez


Agregowanie danych w usłudze Azure Databricks

W tym artykule przedstawiono ogólną semantyka agregacji i omówiono różnice między wynikami obliczanymi przy użyciu zapytań wsadowych, zmaterializowanych widoków i przesyłania strumieniowego.

Agregacje wsadowe

Agregacja wsadowa jest zachowaniem domyślnym obserwowanym podczas uruchamiania zapytania ad hoc w języku SQL lub przetwarzania danych za pomocą ramek danych platformy Apache Spark.

Zapytanie agregacji zapisane względem tabeli lub źródła danych oblicza zagregowane statystyki dla wszystkich rekordów w źródle danych. Usługa Azure Databricks korzysta z optymalizacji i metadanych, gdy tylko jest to możliwe, aby zoptymalizować te zapytania, i może obliczyć wiele agregacji w przypadku dużych zestawów danych.

Opóźnienie agregacji wsadowej i koszty obliczeń mogą wzrosnąć wraz ze wzrostem rozmiaru danych, a wstępnie obliczone wartości agregacji często mogą zaoszczędzić użytkownikom dużo czasu i pieniędzy. Usługa Databricks zaleca używanie zmaterializowanych widoków w celu przyrostowej aktualizacji zagregowanych wartości. Zobacz Agregacje przyrostowe.

Agregacje stanowe

Agregacje zdefiniowane w obciążeniach przesyłania strumieniowego są stanowe. Agregacje stanowe śledzą obserwowane rekordy w czasie i rekompilują wyniki podczas przetwarzania nowych danych.

Podczas przetwarzania agregacji stanowych należy używać znaków wodnych. Pominięcie znaku wodnego z stanowego zagregowanego zapytania powoduje, że informacje o stanie są kompilowane w nieskończoność w czasie. Powoduje to spowolnienie przetwarzania i może prowadzić do błędów braku pamięci.

Nie należy używać agregacji stanowej do obliczania statystyk w całym zestawie danych. Usługa Databricks zaleca używanie zmaterializowanych widoków do obliczania agregacji przyrostowej w całym zestawie danych. Zobacz Agregacje przyrostowe.

Skonfigurowanie obciążeń, które oblicza stanowe agregacje wydajnie i poprawnie wymaga zrozumienia, jak dane docierają z systemów źródłowych i jak usługa Azure Databricks używa znaków wodnych, trybów wyjściowych i interwałów wyzwalaczy w celu kontrolowania stanu zapytania i obliczeń wyników.

Agregacje przyrostowe

Za pomocą zmaterializowanych widoków można obliczyć wiele wartości agregacji przyrostowo. Zmaterializowane widoki automatycznie śledzą zmiany w źródle danych i stosują odpowiednie aktualizacje do zagregowanych wartości podczas odświeżania. Wyniki zwrócone przez zmaterializowany widok są równoważne tym zwracanym przez ponowne skompilowanie zagregowanych wyników na danych źródłowych za pomocą zadania wsadowego lub zapytania ad hoc.

Przybliżone agregacje

Chociaż usługa Azure Databricks wyróżnia się w obliczeniach na bardzo dużych zestawach danych, użycie przybliżeń agregacji może przyspieszyć przetwarzanie zapytań i zmniejszyć koszty, gdy nie potrzebujesz dokładnych wyników.

Używanie LIMIT instrukcji jest czasami wystarczająco dobre, aby uzyskać szybką migawkę danych, ale nie wprowadza losowości ani gwarantuje, że próbkowanie jest dystrybuowane w zestawie danych.

Usługa Spark SQL ma następujące metody natywne do zbliżania agregacji na danych liczbowych lub kategorii:

Możesz również określić procent próbki, TABLESAMPLE aby wygenerować losową próbkę na podstawie zestawu danych i obliczyć przybliżone agregacje. Zobacz klauzulę TABLESAMPLE.

Monitorowanie zestawów danych przy użyciu statystyk agregacji

Profilowanie danych używa zagregowanych statystyk i dystrybucji danych do śledzenia jakości danych w czasie. Raporty można generować, aby wizualizować trendy i planować alerty w celu flagowania nieoczekiwanych zmian w danych. Zobacz Profilowanie danych.