Verwaltung großer Datensätze in Databricks

Michal Milosz
Michal Milosz
May 21, 2025
9 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Verwaltung großer Datenmengen in Databricks, Partitionierung, Z-Ordering, Auto Optimize und mehr

In der heutigen datengesteuerten Welt generieren und verarbeiten Unternehmen riesige Datenmengen auf verschiedenen Plattformen. Die effektive Verwaltung großer Datenmengen ist eine Herausforderung, die optimierte Lösungen erfordert, um eine schnelle Leistung zu gewährleisten, die Betriebskosten zu senken und die Datengenauigkeit sicherzustellen. In einer Databricks-Umgebung, die auf Apache Spark basiert, ist die Nutzung wichtiger Optimierungstechniken unerlässlich, um die Speicherung und Verarbeitung zu optimieren.

Dieser Artikel befasst sich mit drei wichtigen Optimierungsmechanismen: Partitionierung, Z-Bestellung, und Automatisch optimieren, und wird zusätzliche Techniken untersuchen, wie Vakuum und Rückhaltung in Delta Lake, Zwischenspeichern, Materialisierte Ansichten, und Überwachung der Kosten. Zusammen sorgen diese Strategien für den effizienten Umgang mit großen Datensätzen in Databricks.

1. Partitionierung — Daten aus Gründen der Effizienz aufteilen

Was ist Partitionierung?

Bei der Partitionierung werden große Datensätze in kleinere, logische Segmente, sogenannte Partitionen, aufgeteilt. Diese Technik ist besonders effektiv für die Optimierung der Abfrageleistung, da sichergestellt wird, dass nur relevante Teilmengen von Daten in den Speicher gelesen werden. Mithilfe der Partitionierung können Sie die Datenmenge reduzieren, die während der Abfrageausführung gescannt wird, was zu erheblichen Leistungsverbesserungen führt. Die Partitionierung ermöglicht auch die parallele Verarbeitung von Daten, was schnellere Ausführungszeiten ermöglicht.

In Apache Spark spielt die Partitionierung eine Schlüsselrolle bei der Optimierung von Lese- und Schreibvorgängen. Wenn die Partitionierung korrekt angewendet wird, kann Spark mehrere Partitionen gleichzeitig verarbeiten, wodurch die Rechenlast verteilt und der Zeitaufwand für das Lesen großer Datenmengen reduziert wird.

Wie funktioniert Partitionierung in Databricks?

In Databricks wird die Partitionierung auf der Delta Lake-Tabellenebene angewendet. Die Daten werden auf der Grundlage der Partitionierungsspalten in separaten Verzeichnissen gespeichert, sodass Spark bei der Verarbeitung von Abfragen nur die relevanten Partitionen lesen kann. Wenn Sie beispielsweise mit Verkaufsdaten arbeiten, können Sie die Tabelle nach Jahr und Monat partitionieren, um Abfragen zu beschleunigen, die nach Zeitraum filtern:

Dieses Setup stellt sicher, dass Abfragen, die nach bestimmten Jahren oder Monaten gefiltert werden, nur auf die relevanten Partitionen zugreifen, wodurch der Abrufvorgang beschleunigt wird.

Vorteile und Herausforderungen der Partitionierung

Vorteile:

  • Schnellere Abfragen: Durch das Filtern auf der Grundlage von Partitionsspalten können Databricks irrelevante Partitionen überspringen, wodurch die Abfrageleistung verbessert wird.
  • Skalierbarkeit: Die Partitionierung ermöglicht die parallele Verarbeitung großer Datensätze, was die Skalierung von Vorgängen mit erhöhtem Datenvolumen erleichtert.
  • Verbesserte Leistung: Lese- und Schreibvorgänge profitieren von weniger, besser organisierten Dateien, wodurch der Aufwand für Datei-I/O-Operationen minimiert wird.

Herausforderungen:

  • Übermäßige Partitionierung: Eine Überpartitionierung oder eine Partitionierung durch zu viele Spalten kann zu Fragmentierung und Leistungseinbußen führen, da Spark am Ende möglicherweise mit zu vielen kleinen Partitionen zu tun hat.
  • Verzerrte Daten: Wenn die Datenverteilung ungleichmäßig ist, werden einige Partitionen möglicherweise viel größer als andere, was zu einem Ungleichgewicht bei der Parallelverarbeitung führt.

2. Z-Ordering — Optimierung des Datenlayouts für schnellere Abfragen

Was ist Z-Ordering?

Z-Ordering ist eine Technik, bei der die Daten innerhalb von Partitionen so organisiert werden, dass die Datenlokalität optimiert wird. Dies ist besonders nützlich, wenn Abfragen nach mehreren Spalten filtern, da dadurch die Anzahl der Datenblöcke, die gescannt werden müssen, minimiert wird. Wenn Daten Z-geordnet sind, werden Spalten mit einer hohen Korrelation nahe beieinander gespeichert. Dadurch wird sichergestellt, dass Abfragen, die nach diesen Spalten filtern, die Daten schneller abrufen können.

Z-Ordering trägt zur Leistungssteigerung bei, indem die Anzahl der Dateien reduziert wird, die für Abfragen gelesen werden müssen, die nach mehreren Spalten filtern.

Wie funktioniert Z-Ordering in Databricks?

Um Z-Ordering in Databricks anzuwenden, können Sie den SQL-Befehl OPTIMIZE verwenden. Z-Ordering wird in der Regel angewendet, nachdem die Daten in Delta Lake-Tabellen geschrieben wurden. Um beispielsweise die Tabelle sales_data nach order_date zu optimieren, können Sie den folgenden Befehl verwenden:

Z-Ordering hilft sicherzustellen, dass Zeilen mit ähnlichen order_date-Werten nahe beieinander gespeichert werden, sodass Abfragen, die nach order_date filtern, schneller ausgeführt werden können.

3. Automatische Optimierung — Rationalisierung des Datenmanagements

Was ist Auto Optimize?

Auto Optimize ist eine Databricks-Funktion, die Delta Lake-Tabellen automatisch optimiert, indem sie die Dateigrößen und das Layout der Daten dynamisch verarbeitet. Sie automatisiert die Dateikomprimierung und -optimierung bei Schreibvorgängen und stellt so sicher, dass die Delta-Lake-Tabellen effizient abgefragt werden können, ohne dass ein manuelles Eingreifen erforderlich ist. Diese Funktion ist besonders nützlich für Szenarien, in denen häufige kleine Schreibvorgänge andernfalls zu einer großen Anzahl kleiner Dateien führen könnten, was die Leistung beeinträchtigen kann.

Wie aktiviere ich Auto Optimize in Databricks?

Um Auto Optimize in Databricks zu aktivieren, können Sie die Delta-Lake-Tabelleneigenschaften auf Tabellenebene konfigurieren, wie im folgenden SQL-Befehl gezeigt:

Durch die Aktivierung von Auto Optimize kümmert sich Databricks automatisch darum, größere Dateien bei Bedarf in kleinere aufzuteilen und kleinere Dateien in größere zu komprimieren, um den Overhead zu reduzieren.

4. Delta Lake Vacuum & Retention — Verwaltung der Datenlebenszyklen

Was ist Vakuum?

Das Staubsaugen ist ein wichtiger Vorgang in Delta Lake, bei dem alte Versionen von Datendateien bereinigt werden, wodurch der Speicherverbrauch effektiv reduziert und sichergestellt wird, dass Delta Lake-Tabellen optimal funktionieren. Im Laufe der Zeit behält Delta Lake alte Dateiversionen bei, um ACID-Transaktionen zu unterstützen. Wenn diese jedoch nicht verwaltet werden, können sie die Speicherkosten erhöhen und die Abfrageleistung verlangsamen.

Um alte Daten zu verwalten, können Sie den VACUUM-Befehl ausführen, um Dateien zu entfernen, die nicht mehr benötigt werden:

Dieser Befehl entfernt Datendateien, die älter als 168 Stunden (oder 7 Tage) sind, wodurch der gesamte Speicherbedarf reduziert und sichergestellt wird, dass Abfragen mit den neuesten Versionen der Daten funktionieren.

Datenspeicherung und Konfiguration in Databricks

Mit Databricks können Sie auch die Datenspeicherung für gelöschte Dateien konfigurieren. Sie können mit delta.deletedFileRetentionDuration eine Aufbewahrungsdauer für gelöschte Dateien angeben:

Dadurch wird sichergestellt, dass gelöschte Daten für den konfigurierten Zeitraum aufbewahrt werden, und schützt vor Datenverlust im Falle eines unbeabsichtigten Löschens.

5. Caching und materialisierte Ansichten — Verbesserung der Abfrageleistung

Caching in Databricks

Caching ist eine Technik, bei der häufig aufgerufene Daten im Arbeitsspeicher gespeichert werden, sodass sie bei nachfolgenden Abfragen nicht mehr von der Festplatte gelesen werden müssen. Databricks bietet die CACHE SELECT-Funktionalität, mit der Sie die Ergebnisse einer Abfrage zwischenspeichern können:

Durch das Zwischenspeichern der Daten behält Databricks sie im Speicher, was zukünftige Abfragen, die dieselben Daten benötigen, beschleunigt.

Materialisierte Ansichten

Materialisierte Ansichten speichern das Ergebnis einer Abfrage als physische Tabelle und ermöglichen so einen schnelleren Zugriff bei sich wiederholenden Abfragen. Im Gegensatz zu regulären Ansichten werden materialisierte Ansichten vorab berechnet und gespeichert, sodass die Ergebnisse sofort abgefragt werden können.

Beispiel:

Materialisierte Ansichten sind besonders nützlich für analytische Workloads, die eine Aggregation oder Zusammenfassung großer Datensätze erfordern.

6. Überwachung und Kostenoptimierung

Prüfung von SQL-Abfragen

Die Überwachung der Abfrageleistung ist entscheidend für die Identifizierung von Engpässen und die Optimierung der Ressourcenauslastung. Databricks bietet Tools wie Profil abfragen und der EXPLAIN-Befehl, um Benutzern bei der Analyse der Abfrageleistung zu helfen:

Dadurch wird ein detaillierter Ausführungsplan bereitgestellt, der hilft, etwaige Ineffizienzen in der Abfrage zu identifizieren.

Kostenoptimierung für die Verarbeitung

  • Automatische Skalierung von Clustern: Durch die Aktivierung der automatischen Skalierung können Databricks-Cluster die Anzahl der Knoten automatisch an die Workload-Anforderungen anpassen, was zur Kostensenkung beiträgt.
  • Überwachen Sie die Ausführungszeiten von Abfragen: Langandauernde Abfragen deuten oft auf Partitionierungsprobleme oder das Vorhandensein zu vieler kleiner Dateien hin. Die Überwachung der Ausführungszeiten kann helfen, Bereiche zu identifizieren, in denen Optimierungsbedarf besteht.

7. Vergleich von Techniken zur Datenoptimierung

Comparison of Data Optimization Techniques

8. Zusammenfassung und Empfehlungen

Die Verwaltung großer Datensätze in Databricks erfordert die Implementierung einer Kombination aus Partitionierung, Z-Ordering, Auto Optimize und anderen unterstützenden Techniken. Der beste Ansatz hängt von verschiedenen Faktoren ab, z. B. von der Art der Daten, den Arten der ausgeführten Abfragen und den allgemeinen Überlegungen zu den Rechenkosten.

  • Eigenschaften der Daten: Erwägen Sie die Partitionierung nach Spalten, die häufig in Abfragen verwendet werden.
  • Art der Verarbeitung: Ob es sich bei Ihrer Datenpipeline um Batch- oder Streaming-Daten handelt, hängt davon ab, welche Techniken am besten geeignet sind.
  • Kostenoptimierung: Nutzen Sie Auto Optimize und Auto Scaling, um die Betriebskosten zu minimieren.

Durch die Kombination dieser Optimierungstechniken können Sie eine bessere Leistung, geringere Speicherkosten und eine skalierbarere Datenpipeline in Databricks sicherstellen, was die Verwaltung großer Datensätze in der Cloud erleichtert.

Diese erweiterte Version bietet zusätzlichen Kontext und verdeutlicht, wie jede Technik zur Optimierung großer Datensätze in Databricks beiträgt.

Erfolgsstrategien entwickeln: Implementieren Sie Automatisierung, um die Produktivität zu steigern

Share this post
Databricks
Michal Milosz
MORE POSTS BY THIS AUTHOR
Michal Milosz

Curious how we can support your business?

TALK TO US