Freigeben über


Aggregieren von Daten in Azure Databricks

In diesem Artikel werden die allgemeinen Aggregationssemantik vorgestellt und die Unterschiede zwischen Ergebnissen erläutert, die mithilfe von Batchabfragen, materialisierten Sichten und Streaming berechnet werden.

Batchaggregate

Die Batchaggregation ist das Standardverhalten beim Ausführen einer Ad-hoc-Abfrage in SQL oder beim Verarbeiten von Daten mit Apache Spark-DataFrames.

Eine für eine Tabelle oder Datenquelle geschriebene Aggregatabfrage berechnet die Aggregatstatistiken für alle Datensätze in der Datenquelle. Azure Databricks nutzt nach Möglichkeit Optimierungen und Metadaten, um diese Abfragen zu optimieren, und kann viele Aggregate für große Datasets effizient berechnen.

Die Latenz und der Computeaufwand bei der Batchaggregation können steigen, wenn die Datengröße zunimmt. Durch die Vorabberechnung häufig referenzierter Aggregatwerte können Sie viel Zeit und Geld sparen. Databricks empfiehlt die Verwendung materialisierter Sichten, um Aggregatwerte inkrementell zu aktualisieren. Weitere Informationen finden Sie unter Inkrementelle Aggregate.

Zustandsbehaftete Aggregate

Aggregate, die in Streamingworkloads definiert werden, sind zustandsbehaftet. Zustandsbehaftete Aggregate verfolgen beobachtete Datensätze über einen Zeitraum und berechnen Ergebnisse neu, wenn neue Daten verarbeitet werden.

Beim Berechnen zustandsbehafteter Aggregate müssen Sie Wasserzeichen verwenden. Das Weglassen eines Wasserzeichens aus einer zustandsbehafteten Aggregatabfrage führt dazu, dass Zustandsinformationen im Lauf der Zeit unbegrenzt zunehmen. Dies führt zu einer Verlangsamung der Verarbeitung und kann zu Fehler vom Typ „Nicht genügend Arbeitsspeicher“ verursachen.

Sie sollten zustandsbehaftete Aggregate nicht verwenden, um Statistiken über ein gesamtes Dataset zu berechnen. Databricks empfiehlt die Verwendung materialisierter Sichten für die inkrementelle Aggregatberechnung eines gesamten Datasets. Weitere Informationen finden Sie unter Inkrementelle Aggregate.

Um Workloads, die zustandsbehaftete Aggregate effizient und richtig berechnen, richtig zu konfigurieren, müssen Sie wissen, wie Daten aus Quellsystemen eingehen und wie Azure Databricks Wasserzeichen, Ausgabemodi und Triggerintervalle verwendet, um den Abfragezustand und die Ergebnisberechnung zu steuern.

Inkrementelle Aggregate

Sie können materialisierte Sichten verwenden, um viele Aggregatwerte inkrementell zu berechnen. Materialisierte Sichten verfolgen Änderungen in der Datenquelle automatisch nach und wenden bei einer Aktualisierung entsprechende Updates auf die Aggregatwerte Aktualisierung an. Die von einer materialisierten Sicht zurückgegebenen Ergebnisse entsprechen denen, die durch erneutes Berechnen von aggregierten Ergebnissen für Quelldaten mit einem Batchauftrag oder einer Ad-hoc-Abfrage zurückgegeben werden.

Schätzen von Aggregaten

Während Azure Databricks sich bei der Verarbeitung extrem großer Datasets auszeichnet, kann die Verwendung von Näherungswerten für Aggregationen die Abfrageverarbeitung beschleunigen und Kosten reduzieren, wenn präzise Ergebnisse nicht erforderlich sind.

Die Verwendung von LIMIT-Anweisungen reicht in einigen Situationen aus, um eine schnelle Momentaufnahme der Daten zu erhalten. Dieses Vorgehen führt jedoch keine Zufälligkeit ein und garantiert nicht, dass das Sampling über das Dataset verteilt wird.

Spark SQL verfügt über die folgenden nativen Methoden zum Schätzen von Aggregationen für numerische oder kategorische Daten:

Sie können mit TABLESAMPLE auch einen Stichprobenprozentsatz angeben, um eine zufällige Stichprobe aus einem Dataset zu generieren und Aggregatschätzungen zur berechnen. Siehe TABLESAMPLE Klausel.

Überwachen von Datasets mithilfe von aggregierten Statistiken

Datenprofilerstellung verwendet aggregierte Statistiken und Datenverteilungen, um die Datenqualität im Laufe der Zeit nachzuverfolgen. Sie können Berichte erstellen, um Trends zu visualisieren, und Warnungen planen, um unerwartete Änderungen an den Daten zu kennzeichnen. Siehe Datenprofilerstellung.