Die PyCon DE und PyData Berlin sind ein etablierter Leuchtturm im jährlichen Terminkalender der Python Community. Entwickler, Experten und Enthusiasten verschiedenster Hintergründe sind in diesem Jahr zur gemeinsamen Konferenz für drei Tage in Berlin zusammengekommen. Insgesamt 1500 Personen waren vor Ort anwesend und haben an Vorträgen und Workshops aus nicht weniger als sieben meist parallelen Tracks teilgenommen und Wissen ausgetauscht.
Wir waren für Sie dabei und möchten unsere Eindrücke der Konferenz gerne teilen: Heute schauen wir auf Neuerungen und Trends aus dem Themenkomplex des Data Engineering und seiner Anwendungsfelder. In einem früheren Beitrag haben wir bereits unsere Eindrücke und Highlights zum Thema Machine Learning zusammengefasst.
Was soll Data Engineering überhaupt sein und warum ist es notwendig? In seinem Vortrag über “pragmatisches” Data Engineering mit Python gibt Robson Junior einen kurzweiligen und einsteigerfreundlichen Überblick: Um Daten zeitgerecht und im richtigen Format aus Quellsystemen zum jeweils richtigen Abnehmer zu bringen, bedarf es logisch oder technologisch anspruchsvoller Prozesse. Robson stellt eine Reihe von Komponenten vor, die für einen schnellen und gleichzeitig skalierbaren Einstieg ins Data Engineering aus seiner Sicht besonders wertvoll sind. Apache Arrow wird dabei als (in-memory) Datenformat hervorgehoben, das sowohl Transformationsschritte als auch Analysen auf tabellarischen Daten effizient ausführen lässt. Weiter gibt er kurze Einblicke in Distributed Computing mit Apache Spark sowie der Orchestrierung sämtlicher Prozesse und Prozessketten mit Apache Airflow. Ein besonderes Augenmerk sollte dem Testen und Monitoring von Datenintegrität und -qualität geschenkt werden. Als pragmatische Hilfsmittel werden hier die Python-Module Great Expectations und Pydantic genannt, um eine gute Ausgangslage zu schaffen.
Szene aus dem Vortrag von Robson Junior, er illustriert eine typischen Data Pipeline mit Python: Apache Arrow wird als Datenformat für den Transport und die Analyse von Datensätzen genutzt, Apache Spark als Engine für verteilte Berechnungen und Transformationen, Apache Airflow als Orchestrator.
(Quelle: PyConDE/PyData Berlin 2024)
Der Vortrag ist gerade auch deshalb ein guter Einstieg in das Thema Data Engineering, weil einige wertvolle Aussagen darin stecken, die wir aufgrund unserer Erfahrung aus vielen Projekten direkt unterschreiben können: Gutes Data Engineering ist das Fundament funktionierender und effizienter Datenplattformen, sei es für Business Intelligence, Analytics oder Machine Learning und KI-Applikationen. Robuste, zuverlässige Prozesse erfordern Automatisierung, strukturiertes Testen und Monitoring. Aus unserer Sicht besonders wichtig: Das Werkzeug sollte zum Anwendungsfall passen. In vielen Kontexten reichen “klassische” Ansätze zur Datenverarbeitung und mittlere Systemgrößen völlig aus, um performante Ergebnisse zu produzieren. Das ist pragmatisch und spart Kosten für Infrastruktur und Betrieb.
In der Q&A Session zum Vortrag hat sich gezeigt, dass Apache Airflow nach wie vor ein wichtiger Baustein für viele Projekte und Workflows ist. Zugleich können Betrieb, Customising und Testverfahren für Airflow herausfordernd sein. Neben unseren Blogbeiträgen zu diesen Themen, unterstützen wir Unternehmen und Teams auch aktiv bei Einführung, Betrieb und Weiterentwicklung von Airflow.
Gutes Data Engineering übernimmt vor allem Lehren aus dem Qualitätsmanagement und Software Engineering und wendet diese auf Datenverarbeitung und Analyseprozesse an. Ein ganz wichtiger Baustein: automatisiertes, regelmäßiges Testen von Komponenten und deren Zusammenspiel. Bezogen auf Data Pipelines gibt es keine einfache und perfekte Lösung, wie auch Tobias Lampert in seinem Vortrag über Unit Testing von SQL Statements darlegt. Wie lassen sich Data Warehouse Prozesse routinemäßig schon im Entwicklungsprozess und im Rahmen von CI/CD Pipelines automatisiert testen, ohne riesige Datenmengen von der Produktivumgebung in eine Testumgebung zu kopieren? Sein Team hat ein Python Framework geschrieben, dass Testdaten in (nahezu) beliebige SQL-Queries injiziert und somit Tests ohne tatsächliche Testartefakte in einer Datenbank ermöglicht. Ein spannender Ansatz, der auch mit Open Source Frameworks wie SQLGlot und SQL Mock implementiert werden kann.
Tobias Lampert stellt Vor- und Nachteile manueller Tests und automatisierter Unit Tests von SQL Statements gegenüber.
(Quelle: PyConDE/PyData Berlin 2024)
Ein unscheinbarer und gleichzeitig auf Dauer sehr wichtiger Faktor für einen effizienten Entwicklungsprozess ist das lokale technische Setup aller an einem System arbeitenden Personen. Das schließt bei Code-basierten Prozessen (die wir allen unseren Kunden unbedingt empfehlen!) die verwendete Entwicklungsumgebung (IDE) mit ein und auch die jeweils auf dem Computer für das Projekt eingerichtete Software-Laufzeitumgebung. Welche Python Version wird genutzt? Welche Version von Apache Airflow? Das eigene lokale Setup mit den verschiedenen Systemumgebungen auf der Ziel-Infrastruktur für Entwicklung, Test und Produktivbetrieb zu synchronisieren - womöglich über mehrere parallele Projekte hinweg - wird schnell zur Herausforderung und Fehlerquelle. Die “Development Container” Spezifikation kann Abhilfe schaffen, wie Thomas Fraunholz auf der Konferenz vorgestellt hat. Mit einer einzigen Konfigurationsdatei im Projektverzeichnis kann die komplette Ausführungsumgebung per Docker Container gekapselt werden - und so an beliebigen Computern in exakt gleicher Weise reproduziert werden. Dieser ursprünglich für Visual Studio Code entwickelte Ansatz wird nach und nach von weiteren IDEs unterstützt (und ist nicht auf Python als Programmiersprache beschränkt). Eine logische Weiterentwicklung von virtuellen Python-Umgebungen, die den Alltag von Entwicklern in Zukunft weiter vereinfachen und Zeit für die wesentlichen Aufgaben schaffen wird.
Der große Hype um das Schlagwort “Big Data” liegt schon einige Jahre zurück. Die zugrunde liegende Herausforderung besteht aber weiterhin: Für aussagekräftige Analysen müssen Datensätze verarbeitet werden, die weit über die Kapazitäten einzelner Computer und Server hinausgehen. Wenn dieser Punkt erreicht ist, braucht es skalierbare, verteilte Rechnernetze und die entsprechende Steuerungssoftware. Apache Airflow kann seit einiger Zeit dank dynamischer Task-Mappings als Framework genutzt werden. Apache Spark ist der prominente Vertreter auf der großen Bühne. Daneben haben sich weitere Frameworks etabliert, beispielsweise Polars als Erweiterung der populären Pandas Bibliothek sowie das Open Source Python Projekt Dask. Patrick Hoefler hat in Berlin brandneue Performance-Optimierungen an Dask vorgestellt, den sogenannten “Dask DataFrame 2.0”.
Publikumsmagnet für diese Präsentation ist der angekündigte Vergleich mit der Performance anderer Analyse-Frameworks gewesen, namentlich Spark, Polars und DuckDB. Die gezeigten TPC-H Benchmarks wurden dabei mit Datensätzen von 100 Gigabyte sowie 1 und 10 Terabyte Größe gerechnet und lieferten einen wilden Mix an Ergebnissen. Dask selbst schneidet dabei gut ab und kann eine deutliche Verbesserung gegenüber früheren Versionen zeigen. Zudem verspricht Dask gegenüber dem Platzhirsch Spark ein einfacheres Handling und weniger Reibungsverluste, da das Framework selbst in Python geschrieben ist. Aus unserer Sicht kann Dask gerade bei Datensatzgrößen im mittleren Bereich eine sinnvolle Alternative sein und ein Sprungbrett in die Arbeit mit parallelen und verteilten Berechnungen.
Patrick Hoefler leitet die Vorstellung seiner Benchmark-Ergebnisse mit einer Vorstellung der getesteten Frameworks ein:
Apache Spark, Dask, DuckDB und Polars werden hinsichtlich ihrer Performance verglichen. (Quelle: PyConDE/PyData Berlin 2024)
Data Engineering so gestalten, dass trotz großer Datenmengen und einer Vielzahl von Quellen und Abnehmern ein möglichst leichtgewichtiges Gesamtsystem betrieben werden kann. Diesem Ansatz hat sich die Schmiede des noch jungen “Data Load Tool” (dlt) verschrieben. Das in Berlin ansässige Startup dlthub hat im Rahmen der PyData Konferenz zum Austausch eingeladen. Auch wenn wetterbedingt die angekündigte Rooftop-Party im Souterrain stattfinden musste, sind wir der Einladung gerne gefolgt und haben uns über einen konstruktiven Austausch von Ideen gefreut. Dlt verspricht, das Laden von Daten aus verschiedensten Quellen mit einer schlanken und erweiterbaren Python-Bibliothek zu harmonisieren. Es muss keine Infrastruktur aufgebaut, keine Plattform betrieben werden. Dlt erscheint uns ein perfekter Kandidat für kleine bis mittlere Data Warehouses, die mit Apache Airflow nach dem ELT Paradigma betrieben werden. Auf der Konferenz selbst haben Anuun Chinbat und Hiba Jamal das Projekt mit viel Humor vorgestellt.
Die PyCon und PyData Konferenz 2024 hatte ein buntes, hochinteressantes Programm mit vielen Highlights. Wie auch schon bei unserem Rückblick mit Schwerpunkt Machine Learning, haben wir zum Thema Data Engineering nur einen kleinen Ausschnitt live erleben und hier rekapitulieren können. Insgesamt zeigt sich, dass im Maschinenraum einer immer stärker von Daten geleiteten Wirtschaft weiterhin organisatorische und technologische Herausforderungen zu bewältigen sind. Neue Tools, konzeptionelle Ansätze oder Plattformen versprechen auf den ersten Blick Lösungen und besseres Management von Data Pipelines und Transformationen. Dock kluge, zielgerichtete und nachhaltige Entscheidungen bei der Zusammenstellung von Komponenten für den eigenen Anwendungsfall zu treffen, erfordert eine breite Wissensbasis und das nötige Fingerspitzengefühl.
Wir unterstützen gerne bei Konzeption und Betrieb von Daten- und Analyse-Plattformen - egal ob Cloud oder on-prem, anbieterunabhängig, besonders im Python-Ökosystem. Wenn Sie mögen, kontaktieren Sie uns für einen Austausch oder finden Sie uns im nächsten Jahr auf der PyCon/PyData in Berlin!