Was ist Partitionierung in Databricks?

Die Partitionierung ist eine Technik in Databricks, mit der große Tabellen in kleinere logische Bereiche aufgeteilt werden. Dadurch müssen bei einer Abfrage nicht alle Daten gelesen werden, sondern nur die relevanten Partitionen.

Gerade bei sehr großen Delta-Tabellen kann die richtige Partitionierung die Abfragegeschwindigkeit erheblich verbessern und gleichzeitig die Kosten reduzieren.

Wie funktioniert die Partitionierung?

Beim Speichern einer Tabelle werden die Daten anhand einer oder mehrerer Spalten in separate Verzeichnisse aufgeteilt.

Beispiel:

df.write \
.format("delta") \
.partitionBy("year") \
.save("/mnt/data/sales")

Die Daten werden anschließend beispielsweise so gespeichert:

sales/
├── year=2024/
├── year=2025/
└── year=2026/

Wenn später nur Daten aus dem Jahr 2026 abgefragt werden, liest Databricks ausschließlich die entsprechende Partition.

Vorteile der Partitionierung

Eine sinnvolle Partitionierung bietet mehrere Vorteile:

  • Schnellere Abfragen
  • Weniger gelesene Dateien
  • Geringere Compute-Kosten
  • Bessere Skalierbarkeit bei großen Tabellen
  • Effizientere Datenverarbeitung

Vor allem bei Tabellen mit mehreren Millionen oder Milliarden Zeilen kann sich dies deutlich bemerkbar machen.

Beispiel einer Abfrage

SELECT *
FROM sales
WHERE year = 2026;

Da die Tabelle nach year partitioniert wurde, kann Databricks die übrigen Partitionen überspringen. Dieser Mechanismus wird als Partition Pruning bezeichnet.

Welche Spalten eignen sich für Partitionen?

Geeignet sind Spalten mit:

  • Wenigen unterschiedlichen Werten
  • Häufigen Filterbedingungen
  • Gleichmäßiger Datenverteilung

Typische Beispiele:

  • Jahr
  • Monat
  • Land
  • Region
  • Kategorie

Welche Spalten sind ungeeignet?

Nicht jede Spalte sollte als Partition verwendet werden.

Problematisch sind Spalten mit sehr hoher Kardinalität, beispielsweise:

  • Kundennummer
  • Bestellnummer
  • Benutzer-ID
  • Zeitstempel auf Sekundenbasis

Dadurch entstehen sehr viele kleine Dateien und die Performance kann sich sogar verschlechtern.

Faustregel für die Partitionierung

Eine gute Partitionierung sorgt dafür, dass jede Partition ausreichend groß ist. Zu viele kleine Partitionen führen zum sogenannten Small Files Problem.

In vielen Projekten reicht bereits eine Partitionierung nach:

  • Jahr
  • Jahr und Monat
  • Region

aus.

Partitionierung und Z-Ordering

Partitionierung und Z-Ordering verfolgen unterschiedliche Ziele und können kombiniert werden.

  • Partitionierung reduziert die Anzahl der zu lesenden Verzeichnisse.
  • Z-Ordering verbessert den Zugriff innerhalb der verbleibenden Dateien.

Beispiel:

OPTIMIZE sales
ZORDER BY (customer_id);

Durch die Kombination beider Techniken lassen sich besonders große Delta-Tabellen effizient abfragen.

Wann sollte man Partitionierung einsetzen?

Partitionierung ist besonders sinnvoll bei:

  • Sehr großen Tabellen
  • Häufigen Filterabfragen
  • Zeitbasierten Daten
  • Data-Warehouse- und Lakehouse-Szenarien

Bei kleinen Tabellen bringt sie dagegen meist keinen Vorteil.

Fazit

Die Partitionierung gehört zu den wichtigsten Performance-Techniken in Databricks. Durch die Aufteilung großer Tabellen in logische Bereiche können Abfragen deutlich schneller ausgeführt werden. Entscheidend ist jedoch die Wahl der richtigen Partitionierungsspalten, da eine ungeeignete Struktur die Performance sogar verschlechtern kann.

📺 Weitere Databricks-, Azure- und Data-Engineering-Tutorials finden Sie auf meinem YouTube-Kanal:
👉 https://www.youtube.com/@datenanalyst

📚 Weitere Anleitungen rund um Databricks, Power BI, Excel und Data Analytics finden Sie auf:
👉 https://www.datenanalyst.com

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert