ETL

ETL ist eine Kernkomponente Ihrer Data-Warehouse-Bedürfnisse. Es ist die Quelle, die den Datentransfer zwischen den Systemen aktiviert, und gut entwickelte ETL-Tools können Ihre Data-Warehouse-Workflows im Alleingang definieren. Glücklicherweise gibt es eine Vielzahl von ETL-Tools auf dem Markt. Von JavaScript und Java bis hin zu Hadoop und GO finden Sie eine Vielzahl von ETL-Lösungen, die Ihren Bedürfnissen entsprechen.

Aber es ist Python, das weiterhin den ETL-Bereich dominiert. Es gibt weit über hundert Python-Werkzeuge, die als Framework, Bibliothek oder Software für ETL dienen. Wir werden uns einige von ihnen ansehen. Um genau zu sein, vergleichen wir einige der beliebtesten Tools, um zu sehen, wo sie sich auszeichnen.

Warum Python?

Bevor wir beginnen, lassen Sie uns erklären, warum Sie eine ETL-Pipeline mit Python und nicht mit einem ETL-Werkzeug einrichten möchten. Schließlich werden ETL-Tools von Fachleuten entwickelt und gepflegt, die ETL leben und atmen.

Für die meisten von Ihnen werden ETL-Tools zum Standardwerkzeug, sobald Sie mit komplexen Schemata und großen Datenmengen zu tun haben. Sicherlich können Sie SQLAlchemy und Pandas verwenden, um ETL in Python auszuführen. Aber es ist zeitaufwändig, arbeitsintensiv und oft überwältigend, sobald Ihr Schema komplex wird.

Es gibt drei primäre Situationen, in denen Python Sinn macht.

Sie persönlich fühlen sich mit Python wohl und sind fest entschlossen, Ihr eigenes ETL-Werkzeug zu entwickeln.

  1. Sie haben extrem einfache ETL-Bedürfnisse.
  2. Sie haben ein einzigartiges, hyperspezifisches Bedürfnis, das nur durch die individuelle Programmierung einer ETL-Lösung mit Python erfüllt werden kann.
  3. Wenn Sie in eine dieser drei Kategorien passen, haben Sie eine große Auswahl an Optionen auf dem Markt.

Wenn Sie in eine dieser drei Kategorien passen, haben Sie eine Vielzahl von Möglichkeiten auf dem Markt.

Die folgenden Werkzeuge sind einige der vielen Python-Werkzeuge, die für ETL-Bedürfnisse verfügbar sind. Wir haben diese Tools nach Benutzerfreundlichkeit, Beliebtheit und Vielfalt ausgewählt. Jedes dieser Tools könnte also die Lösung sein, nach der Sie persönlich suchen.

1. Apache Airflow

Apache Airflow ist ein Open-Source-Werkzeug zur Workflow-Automatisierung auf Python-Basis, das für die Einrichtung und Wartung von Datenpipelines verwendet wird. Eine wichtige Sache, die es hier zu beachten gilt, ist, dass Airflow kein ETL-Werkzeug ist. Stattdessen hilft es Ihnen bei der Verwaltung, Strukturierung und Organisation Ihrer ETL-Pipelines mithilfe von Directed Acyclic Graphs (DAGs). Der einfachste Weg, über DAGs nachzudenken, ist, dass sie Beziehungen und Abhängigkeiten bilden, ohne tatsächlich Aufgaben zu definieren. Die Beschaffenheit von DAGs gibt Ihnen den Raum, einen einzelnen Zweig mehrmals auszuführen oder Zweige Ihrer Sequenz zu überspringen, wenn dies erforderlich ist. Man kann also sagen, dass A nach B laufen sollte und dass C immer 2 Minuten laufen sollte. Oder Sie können sagen, dass A und B alle 2 Minuten laufen und C nach B läuft.

Die typische Luftstromeinstellung sieht wie folgt aus:

Metadatenbank > Zeitplaner > Ausführender > Arbeiter

Die Metadaten-Datenbank speichert also Ihre Workflows/Aufgaben (d. h. DAGs), der Scheduler (der in der Regel als Dienst ausgeführt wird) verwendet Ihre DAG-Definitionen zur Auswahl von Aufgaben, und der Ausführende bestimmt, welcher Mitarbeiter Ihre Aufgabe ausführt. Worker sind einfach die Prozesse, die die Logik Ihres Workflows/Tasks ausführen.

Apache Airflow ist eine großartige Ergänzung Ihres vorhandenen ETL-Werkzeugkastens, da es für Management und Organisation unglaublich nützlich ist. Außerdem sind bereits Google Cloud- und AWS-Hooks und Operatoren für Airflow verfügbar, so dass Airflow über die wichtigsten Integrationen verfügt, die es für Cloud-Warehousing-Umgebungen nützlich machen.

Wann macht Apache Airflow Sinn? Wenn Sie lange ETL-Aufträge ausführen oder Ihr ETL-Prozess mehrere Schritte umfasst, können Sie mit Airflow an jedem Punkt des ETL-Prozesses neu beginnen. Allerdings ist Apache Airflow KEINE Bibliothek, so dass es eingesetzt werden muss und bei kleinen ETL-Aufträgen weniger sinnvoll sein kann.

Einige Dinge, die man über Apache Airflow beachten sollte

  • Das Apache Airflow-Projekt wurde von Maxime Beauchemin in Airbnb gestartet.
  • Das Apache-Projekt gab bekannt, dass Airflow 2019 ein Projekt auf höchster Ebene sein wird.
  • Die Mehrheit der Airflow-Benutzer setzt Cellerie als Ausführer ein, was die Verwaltung der Ausführung einfach macht.
  • Sie können alle Ihre DAG-Workflows über die Airflow-WebUI verwalten. Das bedeutet, dass Sie “es einstellen und vergessen” können, indem Sie automatisierte Workflows planen. Airflow ermöglicht Ihnen die Ausführung über eine Befehlszeilenschnittstelle, was für die isolierte Ausführung von Aufgaben außerhalb Ihrer Scheduler-Workflows äußerst nützlich sein kann.
  • Wenn Sie auf der Suche nach einem Workflow-Orchestrator wie Airflow sind, ist Prefect eine solide Alternative mit einigen fortgeschrittenen Funktionen. Sie können Ihre DAGs direkt migrieren.

2. Luigi

Luigi (treffend benannt nach einem bestimmten plumber) ist ein Open-Source-Werkzeug auf Python-Basis, mit dem Sie komplexe Pipelines bauen können. Ursprünglich wurde es von Spotify entwickelt, um deren wahnsinnige Arbeitslasten (man denke täglich an Terabytes an Daten) zu automatisieren, und es wird derzeit von einer Vielzahl großer Unternehmen wie Stripe und Red Hat verwendet.

Für Luigi gibt es drei Hauptvorteile.

  • Es bietet Ihnen Abhängigkeitsmanagement mit stellarer Visualisierung.
  • Es ermöglicht die Fehlerbehebung über Checkpoints.
  • Es verfügt über eine Befehlszeilen-Schnittstellenintegration.

Der Hauptunterschied zwischen Luigi und Airflow besteht in der Art und Weise, wie Abhängigkeiten spezifiziert und Aufgaben ausgeführt werden.

Mit Luigi haben Sie Aufgaben und Ziele. Aufgaben verbrauchen Ziele, die durch eine abgeschlossene Aufgabe erzeugt werden. Eine Aufgabe verbraucht also ein Ziel, eine andere Aufgabe verbraucht dieses Ziel und verbraucht ein anderes Ziel. Dadurch wird der gesamte Prozess äußerst unkompliziert und die Arbeitsabläufe bleiben einfach. Dieser zielbasierte Ansatz eignet sich perfekt für einfache ETL-Aufgaben. Bei hyperkomplexen Aufgaben kann es jedoch umständlich (wenn nicht gar unmöglich) werden.

Wann macht Luigi Sinn? Wenn Sie einfache ETL-Prozesse (wie z.B. Protokolle) automatisieren müssen, kann Luigi diese schnell und ohne viel Einrichten erledigen. Wenn es um komplexe Aufgaben geht, ist Luigi durch seine strenge pipeline-artige Struktur eingeschränkt.

Einige Dinge, die es über Luigi zu beachten gilt:

  • Sie können nicht mehr mit Prozessen interagieren, sobald diese mit Luigi laufen.
  • Luigi ist definitiv nicht “set it and forget it”. Luigi synchronisiert für Sie keine Aufgaben mit Mitarbeitern, plant, alarmiert oder überwacht Aufgaben nicht, wie es Airflow tun würde.
  • Luigis UI (oder das Fehlen einer solchen) kann ein Schmerzpunkt sein.

Pandas

Wenn Sie schon eine Weile mit Python arbeiten, wissen Sie wahrscheinlich über Pandas Bescheid. Diese Bibliothek stellt Datenstrukturen/Analysewerkzeuge für Python zur Verfügung. Insbesondere fügt Panda Datenrahmen im R-Stil hinzu – was ETL-Prozesse (wie Datenbereinigung) einfacher macht.

Wenn es um ETL geht, können Sie mit Pandas fast alles machen, wenn Sie bereit sind, sich die Zeit dafür zu nehmen. Außerdem ist Pandas außergewöhnlich einfach zu bedienen. Sie können ein einfaches Skript einrichten, um Daten aus einer Postgre-Tabelle zu laden, diese Daten zu transformieren und zu bereinigen und dann diese Daten in eine andere Postgre-Tabelle zu schreiben.

Es ist nicht alles Spaß und Spiel. Wenn es um In-Memory und Skalierbarkeit geht, schneidet Pandas relativ schlecht ab. Sie können Pandas mit parallelen Chunks skalieren, aber auch hier ist es nicht so einfach, wie etwas wie Airflow für die Skalierung von ETL-Operationen sein würde.

Wann machen Pandas Sinn? Wenn Sie Daten schnell extrahieren, bereinigen, umwandeln und in eine SQL-Datenbank/Excel/csv schreiben müssen. Sobald Sie anfangen, mit großen Datensätzen zu arbeiten, ist es in der Regel sinnvoller, einen stärker skalierbaren Ansatz zu verwenden.

Einige Dinge, die es über Pandas zu beachten gilt:

  • pandas wird von NumFocus gesponsert.
  • Ein großer Teil der Python-Benutzer, die einen ETL-Batch-Start mit Pandas wünschen.

petl

Wenn es um ETL geht, ist petl die einfachste Lösung. Die treffend benannte Python-ETL-Lösung funktioniert, nun ja, ETL funktioniert. Sie können Tabellen in Python erstellen, Daten aus mehreren Quellen extrahieren usw. In der Funktionalität ähnelt sie Pandas, obwohl sie nicht den gleichen Grad an Analyse bietet. petl kann mit hyperkomplexen Datensätzen umgehen, nutzt den Systemspeicher gut aus und hat eine unglaubliche Skalierbarkeit. Aber es fehlt definitiv in der Geschwindigkeitsabteilung.

Abgesehen davon ist es viel einfacher, petl zu nutzen, als mit SQLAlchemy oder anderen benutzerdefinierten Lösungen eine eigene ETL zu erstellen.

Wann macht petl Sinn? Wenn Sie die Grundlagen von ETL ohne die Analysefunktionen benötigen und Ihnen die Geschwindigkeit keine Rolle spielt.

Some things to note about petl:

  • petl ist nicht für seine Geschwindigkeit oder die Fähigkeit zur Verarbeitung großer Datensätze bekannt.
  • petl steht für “Python ETL”.

5. Bonobo

Bonobo ist ein leichtgewichtiges Python-ETL-Framework, das unglaublich einfach zu bedienen ist und es Ihnen ermöglicht, Pipelines schnell zu implementieren und parallel auszuführen. Mit Bonobo können Sie aus einer Vielzahl von Quellen extrahieren (z.B. CSV, JSON, XML, XLS, SQL usw.) und die gesamte Transformation folgt atomaren UNIX-Prinzipien. Das Beste an Bonobos ist, dass neue Benutzer keine neue API erlernen müssen. Wenn Sie Python kennen, ist die Arbeit in Bonobo ein Kinderspiel. Diagramme können unter Berücksichtigung der Geschäftsanforderungen erstellt werden, und Sie können Ihre eigene Bibliothek erstellen oder eine einfache ETL-Batch-Automatisierung durchführen.

Wirklich, Bonobo ist das “Jedermann”-Werkzeug für Python-Benutzer. Es ist ganz einfach. Es kann mit halbkomplexen Schemata umgehen. Außerdem ist es quelloffen und skalierbar.

Wann macht Bonobo Sinn? Wenn Sie einfache, leichtgewichtige ETL-Aufgaben erledigen müssen und keine Zeit haben, eine neue API zu erlernen.

Einige Dinge, die es über Bonobo zu beachten gilt:

  • Es gibt eine offizielle Bonobos Docker-Erweiterung, mit der Sie Jobs innerhalb von Docker-Containern ausführen können.
  • Bonobo hat CLI-Ausführung.
  • Bonobo verfügt über Graphviz für die Visualisierung von ETL-Jobs.
  • Es gibt eine offizielle SQLAlchemy-Erweiterung (in alpha).

Bubbles

Bubbles ist ein weiteres Python-Framework, das Sie zur Ausführung von ETL verwenden können. Im Gegensatz zu einigen anderen ETL-Frameworks verwendet Bubbles Metadaten zur Beschreibung von Pipelines und ist nicht skriptbasiert. Obwohl Bubbles für Python geschrieben wurde, behauptet der Autor, dass es nicht ausschließlich für Python gedacht ist. Ein treibendes Thema von Bubbles ist, dass es technologisch agnostisch ist, so dass Sie sich nicht um die Arbeit mit oder den Zugriff auf Daten kümmern müssen – nur um die Transformation.

Wann macht Bubbles Sinn? Wenn Sie eine schnelle ETL-Einrichtung benötigen, die technologisch agnostisch ist und Ihnen die Freiheit gibt, sich ausschließlich auf den ETL-Prozess zu konzentrieren.

Einige Dinge, die es über Bubbles zu beachten gilt:

  • Bubbles befindet sich noch in der Prototyp-Phase.
  • Der Hauptanziehungspunkt von Bubbles ist, dass es abstrakt ist, so dass das direkte Arbeiten an ETL im Gegensatz zum Erlernen der Abfragesprache im Mittelpunkt steht.
close

Verpasse diese Tipps nicht!

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.

Leave a Reply

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

One reply on “Python und ETL 2022: Eine Liste und Vergleich der wichtigsten Python-ETL-Werkzeuge”

  • Juni 20, 2022 at 4:13 pm

    Danke für den Beitrag zu Python-ETL-Werkzeugen. Ich bin schon länger auf der Suche nach weiteren Informationen hierzu. Der Beitrag hilft mir wirklich sehr!