Hintergrund
- Zu erstellen war eine Batch-Pipeline, welche für eine datenintensive Applikation mindestens eine Millionen Datensätze zu einem fiktiven Use_Case einließt, verarbeitet und speichert.
- Diese Daten sollen im weiteren Verlauf, welcher nicht Teil dieses Moduls ist, für die Aktualisierung eines ML-Alogirhtmus genutzt werden.
Anforderungen Use-Case
- Zu berücksichtigende Aspekte waren die Verlässlichkeit, Skalierbarkeit und Wartbarkeit des Systems.
- Die Versionierung des Codes sollte über Github erfolgen.
- Im Sinne der Microservice Architektur sollte auf das Prinzip der Containerisierung zurückgegriffen werden.
Anforderungen Host-System
- Auf dem Hostsystem sollte Docker installiert sein, idealerweise mit der Docker Desktop komponente. Diese dient der visuellen Überwachung der Container. Auch können über diesen die Logs der Container eingesehen werden.
- Das gesamte Repository muss im selben Verzeichnis des Hostsystems liegen. Hierzu muss auch folgende CSV-Rohdatei "nyc_yellow_taxi_trip_records.7z" heruntergeladen werden. Auch diese muss im besagten Verzeichnis liegen und vor Nutzung entpackt werden. Hierfür kann beispielsweise 7zip genutzt werden.
- Die Installation von Python ist nicht notwendig, da dies bereits über die jeweiligen Container bereitgestellt wird.
Architektur
Ausführen der Pipeline
- Docker starten.
- Im lokalen Verzeichnis "CMD" ausführen. Im Ordner "Project Data Engineering II IU" liegen beispielsweise alle Dateien.
C:\Users\PycharmProjects\Project Data Engineering II IU>
- Docker-Container Images erstellen:
docker-compose build --no-cache
- Pipeline Ausführen.
docker-compose up
- Pipeline führt alle zuvor definierten Schritte aus. Die angezeigten Logs in CMD geben Auskunft über den aktuellen Status. Es wurden verschiedene Informationen für den Endnutzer hinzugefügt. Beispielsweise:
jupyter-pyspark-notebook | Verbindung zur PostgreSQL-Datenbank cleaned_data erfolgreich hergestellt.
jupyter-pyspark-notebook | Es wurden 63417 Ausreißer entfernt.
jupyter-pyspark-notebook | Schreiben der Daten in die Tabelle cleaned_data erfolgreich.
Insight Plots