Singer, entwickelt von Talend, ist ein Open-Source-Tool, das die Entwicklung von Ingestion Prozessen erleichtert. Singer wurde so strukturiert ETL Prozesse so, dass Datenein- und Ausgänge zu verbinden, wodurch ETL-Prozesse modular aufgebaut und recht einfacher zu betreiben sind. Bei der Verarbeitung werden die Daten im JSON Format zwischen Quellen und Zielen übertragen, so dass Sie inkompatible Formate kein Problem darstellen sollten. Wie also macht Singer all dies? Im Wesentlichen bricht es ein ETL-Skripte in Taps und Targets auf, die im Folgenden beschrieben werden:
Taps sind Skripte zur Datenextraktion, mit denen Daten aus Dateien, Datenbanken und APIs abgerufen werden können.
Targets sind Skripte zum Laden von Daten, die dazu bestimmt sind, die von Taps extrahierten Daten zu nehmen und sie zu ihrem Zielort zu bewegen.
Ziemlich unkompliziert, oder? Leider funktioniert das Beispiel auf der Website nicht. Also doch kompliziert.
Daher hier das ganze Beispiel um Wechselkurs-Daten aus Exchangeratesapi.io in eine CSV-Datei zu übertragen
Zunächst müssen wir eine virtuelle Python Umgebung für den Tap einrichten.
python3 -m venv tap-exchangeratesapi
source tap-exchangeratesapi/bin/activate
pip install tap-exchangeratesapi
deactivateDanach müssen wir dasselbe jetzt auch das Ziel tun:
python3 -m venv target-csv
source target-csv/bin/activate
pip --install target-csv
deactivateSobald wir das Target und Tap installiert haben, müssen wir die Konfigurationsdateien im Arbeitsverzeichnis bearbeiten. Dies ist notwendig, um einige Parameter zu setzen:
**Credentials: Falls erforderlich, geben wir die Zugangsdaten für den Aufruf der Datenquelle ein. In der Regel handelt es sich dabei um einen API-Schlüssel, es kann sich aber auch um beispielsweise username/passwort handeln.
**Start Date: Definiert bei der ersten Synchronisierung, ab welchem Datum Daten geladen werden sollen. Startdaten müssen im RFC3339 Format angegeben sein.
**User Agent: Kontaktinformationen für den Fall, dass der API-Anbieter diese benötigt.
Für unser Beispiel müssen wir nur das Tap konfigurieren:
vi exchangetap.config{
"base": "AUD",
"start_date": "2020-01-19"
}Einige Taps unterstützen den Discovery-Modus, der es ermöglicht, eine Beschreibung der Daten-Streams zu erhalten. Wenn Ihr Tap für den Discovery-Modus unterstützt, können wir den Parameter –discover hinzufügen.
Sobald das erledigt ist, können wir den Tap ausführen und die Ausgabe direkt an das Ziel leiten.
./tap-exchangeratesapi/bin/tap-exchangeratesapi -c exchangetap.config | ./target-csv/bin/target-csv Um das nächste Startdatum zu ermitteln können wir das letzte Datum ausloggen:
./tap-exchangeratesapi/bin/tap-exchangeratesapi -c tap.config | ./target-csv/bin/target-csv > nextrun.jsonSinger.io ist meiner Meinung nach ein einfach zu verstehendes Framework für Data Ingestion und hat theoretisch viel Potenzial! Es ist quelloffen und hat eine Menge Taps und Targets die einfach installiert und eingebunden werden können. Es können jedoch einige Probleme auftreten, da nicht alle Taps und Targes auf dem neuesten Stand gehalten werden und es zu inkompatiblitäten bei den Abhänigkeiten kommen kann, venv ist die Lösung. Außerdem gibt es keine Möglichkeit zum Mapping von einem Schema auf ein anderes. Ansonsten sind die Singer-Bibliotheken und -Vorlagen ziemlich gut dokumentiert und gepflegt, so dass der Prozess zur Erstellung einer Integration ziemlich einfach war. Für die automatisierte Verarbeitung bietet Talend ein kommerzielles Angebot.
+++