Die Delta-Architektur bietet einen effizienten transaktionalen Weg um mit großen Datenmengen, die in Form von Files auf Amazon S3 oder anderen BLOB-Speichern gepeichert sind, zu arbeiten. Es basiert auf Databricks Delta Tabellen, die auf dem Databricks File System (DBFS) erstellt wurden, das sich durch folgende Komponenten beschreiben lässt:

  • Versionierte Parkettdateien basierend auf Apache Parquet, ein spaltenorientiertes Speicherformat, das sehr effiziente Komprimierungs- und Codierungsschemata unterstützt.
  • Indizes und Statistiken – Für die aufgenommenen Daten werden automatisch Indizes und Statistiken erstellt und verwaltet wodurch die Abfrageeffizienz extrem erhöht wird. Bei Abfragen werden nur die Abfrage relevanten Teilmengen der Daten verwendet (Dataskipping).
  • Das Delta-Protokoll speichert alle Änderungen an der Tabelle als geordnete atomare Einheiten, d.h. dass Einträge nur dann erfolgen, wenn Änderungen erfolgreich durchgeführt wurden.

Das Delta-Design ermöglicht es Anwendern, eine Momentaufnahme (Snapshot) des Zustands einer Tabelle effizient abzufragen und nach dem Partitionswert zu Filtern, sodass unabhängig von der Anzahl der Dateien schnelle Ergebnisse erzielt werden können. Es verwaltet die Dateigrößen, d. h. bei fragmentierten Dateien, werden diese zu  effizienteren, größeren Dateien kompaktiert oder kombiniert, um die Abfrageleistung zu beschleunigen. Oft verwendete Daten werden automatisch zwischengespeichert (Datacaching), was den Zugriff für Abfragen wesentlich beschleunigt. Durch die Versionierung der Parkettdateien wird durch Delta auch die Verfolgung der Datenentwicklung ermöglicht.

Neben einer effizienten Abfrageleistung spielt aber auch die Datenqualität eine entscheidene Rolle. Auch hier punktet Delta mit diversen Techniken:

  • ACID TRANSACTION „Alles oder Nichts“ – Eine Tansaction wird entweder vollständig ausgeführt, oder komplett zurückgerollt
  • Snapshot-Isolation – Sicherstellung, dass mehrere Nutzer gleichzeitg in einer Tabelle schreiben können, ohne die Leseaufträge anderer Nutzer zu stören
  • SCHEMA ENFORCEMENT – Sicherstellung der Datenintegrität für aufgenommene Daten durch die Bereitstellung von Schemas
  • EXACTLY ONCE – Einsatz von Checkpointing , um sicherzustellen, dass bei lang andauernden Berechnungen, mehreren Streams oder bei gleichzeitiger Stapelverarbeitung Daten weder übersehen noch irrtümlich dupliziert werden
  • UPSERTS AND DELETES SUPPORT – Standard Spark-Tabellen sind einmalig geschrieben, d.h. sie können nicht nachträglich geändert werden. Jegliche spätere Änderungen müssen mit neuen Tabellen behoben werden. Delta bietet Unterstützung für UPSERTS und DELETES um Änderungen an den Daten vornehmen zu können.

Die Vorteile, die die Databricks Delta Technologie gegenüber unserer vorangegangenen Lösung hat, die nur auf Dataframes aufgebaut war, sind nicht zu übersehen. Die automatische Index-Generierung und -Verwaltung, das automatische Datacaching, der gezielte Zugriff auf die benötigten Daten (Dataskipping), die Möglichkeit der Tabellen-Partitionierung, die die Delta-Technologie mit sich bringt, haben für unsere Prozesse die auf Databricks laufen, einen enormen Performancegewinn generiert. Um die neue Technologie nutzen zu können, mussten wir erstmal die benötigen Spark-Bibliotheken in unseren Notebooks importieren, dann, anstelle der früher benutzten Dataframes, die Delta-Tabellen erstellen, die nötigen Partitionierungen der Tabellen vornehmen und die Funktionen und Abfragen, die für Dataframes implementiert wurden, für die Anwendung auf Delta-Tabellen umschreiben oder neu implementieren.

Die Umstellung auf die Delta Technologie hat uns eine signifikante Performance-Steigerung ermöglicht. Die Datenverarbeitung konnte mit Hilfe der neuen Technologie von Laufzeiten von über 7 Stunden bereits auf unter 3 Stunden gesenkt werden. Und das, obwohl wir für die Verarbeitung ein kleiner dimensioniertes Cluster eingesetzt haben. Es besteht weiteres Optimierungspotenzial, das wir noch ausschöpfen werden.

Adrian Reichenberger

techblog@walbusch.de

Kontakt Blog

Wenn Sie Fragen oder Feedback zum Technologie-Blog oder zu einem unserer Beiträge haben, können Sie sich gerne per Mail an unser Technologie-Blog Team wenden!

E-Mail: techblog@walbusch.de