Was sind Data Pipelines? Eine Einführung

Der Begriff Data Pipeline beschreibt zusammenfassend den Prozess der Datengewinnung, -übertragung, -speicherung und -aufbereitung. Es geht vom Prinzip um die Frage, wie wir Daten vom Punkt X zum Punkt Z umwandeln und übertragen können. Der Begriff umfasst verschiedene Ebenen der Datenbearbeitung und kann je nach Datentyp und der Aufgabe verschiedene Schritte beinhalten. Data Pipelines können aus diesem Grund letztendlich verschiedene Datenprozesse im Unternehmen beschreiben, abhängig davon, um was für Daten es sich dabei handelt und was die eigentliche Verwendung für die Daten ist.


Wozu brauchen wir Data Pipelines?

Data Pipelines helfen den Data Science Prozess im Unternehmen zu straffen. Sie bringen Ordnung in den Prozess der Datenanalyse bzw. des Machine Learning.

Eine fertiggestellte Data Pipeline ermöglicht es, den Prozess der Datengewinnung, -bereinigung und bereitstellung zu automatisieren. Die so aufgearbeiteten Daten erleichtern die Arbeit der Data Scientists und Machine Learning Engineers, denn sie stellen gut gepflegte Datensätze zur Weiterverwendung in Datenanalysen und Machine Learning Verfahren bereit. Die Erstellung von Data Pipelines erleichtert somit maßgeblich die Arbeit einer Datenwissenschaftlerin. Diese Arbeit besteht zu großen Teilen aus der Datenbereinigung und Datenbearbeitung:


"A new survey of data scientists found that they spend most of their time massaging rather than mining or modeling data."


(Forbes) (https://www.forbes.com/sites/gilpress/2016/03/23/data-preparation-most-time-consuming-least-enjoyable-data-science-task-survey-says/)


In vielen großen Unternehmen werden aus diesem Grund inzwischen die entsprechenden Rollen getrennt. Die Bereitstellung und Pflege der Daten ist die Aufgabe eines Data Engineers. Für die weitere Modellierung dieser Daten bzw. das Erstellen von Machine Learning Algorithmen ist eine Datenwissenschaftlerin verantwortlich. Kleinere und mittlere Unternehmen beschäftigen hier aus Kostengründen oft nur einen Datenwissenschaftler, der beide Aufgaben wahrnimmt.


Die Zusammensetzung einer Data Pipeline

Es gibt verschiedene Arten Datenpipelines zu systematisieren. Die Zusammensetzung der Data Pipeline hängt oft mit dem Datentyp zusammen und ist insbesondere davon abhängig, ob es sich dabei um sogenannten Echtzeitdaten oder andere Daten handelt. Vom Prinzip aber gibt es gewisse Schritte, die in jeder Form einer Datenpipeline vorkommen.





Extract-Transform-Load Pipeline (ETL)

Eine sogenannte ETL-Pipeline beschreibt eine klassische und bislang die gängigste Unterform einer Datenpipeline, die sogenannte Extract-Transform-Load Pipeline.

Dies ist der klassische Aufbau einer Datenpipeline, der auch heute noch am häufigsten vertreten ist.

Hier werden die Daten in drei Schritten bearbeitet.


1. Extract bzw. Datengewinnung

Im ersten Schritt werden die Daten aus verschiedenen Quellen gewonnen. Hier können jegliche Quellen in Betracht kommen: Daten aus Sensoren, Bilderdaten aus Kameras, aber auch klassisch gespeicherte Daten aus relationalen Datenbanken oder schlicht Excel Dateien.


2. Transform bzw. Datenbearbeitung

Im zweiten Schritt werden die Daten bearbeitet, damit sie die erforderliche Form für weitere Analyse/Gebrauch haben. Es kann sich bei diesem Schritt also um die Datenumformattierung handeln, aber auch um weitere Datenbearbeitung bzw. Bereinigung.


3. Load bzw. Datenbereitstellung

Im letzten Schritt werden die bearbeiteten Daten in die entsprechenden Datenbanken bzw. Anwendungen eingespeist und bereitgestellt.

Diese Struktur einer Data Pipeline ist immer noch die am weitesten verbreitete. Sie findet weiterhin Anwendung in klassischen Analysen und in der Arbeit mit klassischen relationalen Datenbanken.


Real-Time Data Pipeline

Seitdem aber viele Unternehmen zunehmend mit Big Data und Real Time Data (Echtzeitdaten) arbeiten, sind auch andere Strukturen im Hinblick auf das Aufbauen einer Data Pipeline notwendig.

Real-time Datenpipelines arbeiten, wie der Name bereits sagt, mit Echtzeitdaten als Datenquelle. Da es sich hierbei meistens um Big Data handelt, müssen auch die Datenpipelines entsprechend angepasst werden.

Echtzeitdaten werden zunächst in Streaming Plattformen wie beispielsweise Apache Kafka gestreamt. Danach erfolgt die Speicherung der Daten in einem Data Lake. Im Gegensatz zu einer relationalen Datenbank können die Daten in einem Data Lake unstrukturiert (ohne vorgegebenes Format) gespeichert werden.

Erst nach diesen Schritten beginnt die klassische ETL-Transformation. Die im Data Lake gespeicherten Daten können mittels spezieller auf Big Data spezialisierten Anwendungen wie beispielsweise Apache Spark extrahiert und weiterbearbeitet werden.


Batch Streaming Data Pipeline

Neben den Daten, die in Echtzeit bearbeitet werden, gibt es auch eine Möglichkeit die Daten in bestimmten Zeitintervallen, sogenannten Batches abzurufen. Solche Daten werden im Rahmen der Batch Streaming Data Pipeline bearbeitet.

Obwohl man hier ähnlich wie im Fall von Echtzeitdaten mit Big Data arbeitet, kann hier auch die klassische Form der ETL-Pipeline zur Anwendung kommen, denn die Daten werden hier nur in Form von sogenannten Batches (Bündeln) abgerufen. Dies geschieht meistens in zeitlichen Intervallen von beispielsweise einem Tag oder einen Monat. So kann auch die Datenmenge, mit der man hier arbeitet, reduziert werden.


Lambda Data Pipeline

Real Time Data Streaming und Batch Data Streaming können zusammen in einer Lambda Data Pipeline bearbeitet werden. Dies ist eine komplexere Data Pipeline Architektur, denn sie verbindet vom Prinzip beide Pipelines. Zum einen werden hier die Daten aus relationalen Datenbanken in den klassischen Formaten verwendet. Zum anderen werden diese klassischen Daten Formate mit Echtzeitdaten aus Streaming-Plattformen miteinander vermischt.

Diese Architektur (https://en.wikipedia.org/wiki/Lambda_architecture) besteht deshalb oft aus zwei Ebenen der Datenbearbeitung: Streaming-Ebene und Batch-Ebene. In diesem Prozess werden die Daten zunächst entsprechend der oben genannten Data Pipelines bearbeitet und nachfolgend auf einem "serving layer" gespeichert. Hierzu sind dann meistens spezielle Datenbanken notwendig, wie Apache Cassandra oder MongoDB.


Data Pipelines und Machine Learning Pipelines in Python

Der Begriff Pipeline wird zudem oft auch im Kontext von Arbeitsabläufen im Machine Learning genutzt. Python bietet verschiedene Pipeline-Lösungen an, um den Data Science Prozess zu straffen. Somit können die Daten für verschiedene Anforderungen der ML Algorithmen angepasst werden.

Beispielsweise können im Natural Language Processing bestimmte Bearbeitungsschritte als eine Pipeline zusammengefasst werden. Auf diese Weise wird die natürliche Sprache so bereinigt, dass sie in einen Machine Learning Algorithmus eingespeist werden kann. Auf diese Weise vermeidet man die Entstehung des sogenannten "spaghetti code", welcher ungeordnet diverse Programmierschritte enthält. An dieser Stelle bildet man eine Pipeline, die diverse Schritte in sich vereint. Auf diese Weise ist der Code übersichtlich und für Außenstehende nachvollziehbar. Er kann auch sofort in andere Anwendungen mit einfließen.


Die Pipeline Funktion in Python kann zudem einem sogenannten Datenaustritt (data leakage) vorbeugen. Einer der häufigsten (und gravierendsten) Fehler im Data Science Prozess ist die Vermischung von Testdaten mit Trainingsdaten. Dieser Fehler kann auch zufällig passieren, wenn komplexere Methoden der Modellerstellung zur Anwendung kommen wie beispielsweise cross validation. Die Erstellung der Pipeline in Python (https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.Pipeline.html) verhindert auch hier die Gefahr der Datenvermischung, bevor wir mit dem Schritt cross validation beginnen.


Zusammenfassung: Datenpipelines im Unternehmen sind empfehlenswert

Insgesamt ist die Erstellung von Datenpipelines also extrem vorteilhaft, um die Datenarbeit im Unternehmen zu organisieren und zu vereinfachen. Mit funktionierenden Datenpipelines lassen sich viele Datengewinnungs- und Bearbeitungsprozesse automatisieren und für diverse Projekte innerhalb verschiedener Bereiche einsetzen.