Blog

Must-have Ressourcen, Skills und Techniken für Data Engineers und Data Scientists

Nachdem wir in den Artikeln „Onboarding neuer IT-Mitarbeiter (DevOps, Big Data, Developer)“ und „Tutorial: IT-Basiswissen für DevOps, Big Data, Developer“ die grundlegenden Themen für neue IT-Fachkräfte vorgestellt und ein Tutorial zum Erlernen dieses Basiswissens gezeigt haben, möchten wir nun genauer auf Werkzeuge und Techniken eingehen, die speziell für Mitarbeiter im Bereich Data Engineering oder Data Science relevant sind.

Abgrenzung zwischen Data Scientist und Data Engineer

data scientist vs data engineer

Was macht ein Data Scientist?

Kernkompetenzen eines Data Scientists liegen in fortgeschrittenen Kenntnissen der Mathematik und Statistik, Machine Learning, Artificial Intelligence und erweiterter Fähigkeiten zu Datenanalyse. Oberstes Ziel eines Data Scientist ist es die Auswertungsergebnisse in Hinblick auf die Nützlichkeit für ein Unternehmen zu untersuchen und diese verständlich zu präsentieren bzw. zu kommunizieren. Kommunikation und verständliche Visualisierung der Ergebnisse stellen eine Schlüsselqualifikation dar und sind genau so wichtig wie die Durchführung der Analysen selbst. Im Gegensatz zu einem Data Engineer ist ein Data Scientist viel mehr mit der Interpretation und der (visuellen) Aufbereitung der Daten befasst, trainiert Modelle bzw. Machine Learning Algorithmen und prüft diese fortlaufend auf Passgenauigkeit.

Was macht ein Data Engineer?

Kernkompetenzen eines Data Engineers liegen in dem Bereich der angewandten, fortgeschrittenen Programmierung in Hochsprachen (Python, Scala, Java), dem Verständnis von verteilten Systemen und Datenflüssen in diesen. Datenanalyse und die Verwendung von Werkzeugen zur Datenextraktion und -transformation gehören ebenso zu dessen Fähigkeiten. Im Gegensatz zu einem Data Scientist stellt ein Data Engineer also Daten bereit und verarbeitet diese programmatisch.

Generische Skills & Tools

Für Data Engineers und Data Scientists gibt es einige Werkzeuge und Methoden, die in fast allen Projekten benötigt werden. Sehr verbreitet ist die Programmiersprache Python. Diese wird verwendet um Daten wie z. B. CSV Dateien aufzubereiten, Daten zu transformieren und das Ergebnis in einer Datenbank oder einer anderen Datei zwecks Weiterverarbeitung abzuspeichern. Das Python Ökosystem ist riesig und es existiert eine Vielzahl von Bibliotheken mit bereits erstellen Funktionen, die in eigenen Projekten verwendet werden können. Auch das sehr populäre Framework Apache Spark für Cluster Computing kann mit Python (und Scala, Java) via PySpark angesprochen werden. Da viele Universitäten in MINT Fächern zur Datenaufbereitung häufig auf Python zurück greifen ist hier häufig schon Basiswissen vorhanden.

Ein vollständiger Kurs für den Einstieg in Python lässt sich hier abrufen: Learn Python – Full Course for Beginners

Weniger verbreitet ist die objektorientierte und funktionale Programmiersprache Scala. Scala Programme werden – genau wie Java – zu Bytecode kompiliert und auf der JVM ausgeführt. Da viele Projekte aus dem Big Data Umfeld in Scala realisiert wurden (z. B. Apache Spark) sind Scala Kenntnisse oft notwendig um alle Features der Komponenten nutzen zu können oder um besonders effiziente Programme zu erstellen. Generell hilft zumindest ein Grundverständnis um Scala Code lesen und gegebenenfalls anpassen zu können.

Der vollständige Kurs für den Einstieg in Scala lässt sich hier abrufen: Scala Tutorial

Eine weitere, wichtige Basistechnologie ist die Hortonworks Apache Hadoop Distribution. Aufgrund der freien Verfügbarkeit wird sie in vielen Unternehmen eingesetzt – sowohl On-Premise als auch in Cloud-Instanzen. Apache HDFS, Apache Hive, Apache Spark,… und viele weitere Projekte werden oft auf Basis der Hortonworks Plattform eingesetzt. Ein sehr lehrreicher Online-Kurs um einen Überblick über die Verzahnung und den Einsatzzweck der einzelnen Technologien der Hortonworks Distribution zu erhalten findet man bei Udemy: The Ultimate Hands-On Hadoop – Tame your Big Data!

Einen guten Überblick über das Apache Hadoop Ökosystem und dessen Einzelbestandteile erhält man auch in diesem, wirklich sehr empfehlenswerten, Video: Hadoop Tutorial For Beginners | Hadoop Ecosystem Explained in 20 min! – Frank Kane

Für einen umfangreichen Überblick zu Themen wie Datenstrukturen (Tabelle, Graphen, etc.), Datenformate, Abfragesprachen und -konzepten (SQL, NoSQL), Datenspeicherungskonzepte, Clustering, Herausforderungen verteilter Systeme, Batch- und Streamprocessing sowie generellen Konzepte zu datenintensiven Anwendungen empfehlen wir das Oreilly Buch „Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems„. Die Kapitel des Buches bilden jeweils eigenständige Wissenseinheiten, so dass man das Buch nicht von vorne bis hinten durcharbeiten muss sondern sich die jeweils benötigen Teile autark aneignen kann. Empfehlenswerte Kapitel sind aus unserer Sicht

  • Teil I:
    • Kapitel 1 – Reliable, Scalable, and Maintainable Applications
    • Kapitel 2 – Data Models and Query Languages
    • Kapitel 4 – Encoding and Evolution
  • Teil 2:
    • Kapitel 7 – Transactions
    • Kapitel 8 – Trouble with Distributed Systems
  • Teil 3:
    • Kapitel 10 – Batch Processing
    • Kapitel 11 – Stream Processing

Das Buch hat zum Ziel die „Denke“ der Anwendungsentwicklung bei Systemen mit großen Datenmengen auf gebräuchlicher PC- und Serverhardware zu vermitteln. Standardhardware kann ausfallen, zeitverzögert reagieren, (temporär) blockiert sein und daher benötigt es effiziente und fehlertolerante Frameworks welche Berechnungen in solch „unsicheren“ Umgebungen sicher durchführen können. Zudem müssen einige Gestaltungsrichtlinien beim Entwurf von Software in verteilten Umgebungen bedacht werden. Wir empfehlen die oben aufgelisteten Kapitel zuerst zu lesen und dann die anderen zur Vertiefung der Thematiken zu konsultieren.

Data Engineering

Data Engineering

Ein Data Engineer beschäftigt sich unter anderem mit folgenden Themen:

ETL Konzepte: Extract, Transform, Load ist ein Prozess bei dem Quelldaten aus unterschiedlichen Systemen (Buchhaltung, Lagerhaltung, Werbedaten, Nutzerverhalten, etc.) in einer neuen, zentralen strukturierten Datenbank zusammengeführt werden (Data Warehouse, Data Lake). Dabei werden Informationen häufig über IDs referenziert (etwa Produktnummern mit deren Produktdaten zusammen geführt) und ungültige Einträge bereinigt. Um die Daten in hoher Qualität für weitere Analyse Schritte bereit stellen zu können, ist es wichtig zunächst die Bedeutung der einzelnen Informationen (z. B. Spalten einer Tabelle) zu verstehen und zu dokumentieren. Dem genauen Verständnis bzw. der Aussage von Datenwerten kommt damit eine Schlüsselrolle für spätere Analysen zu. Die Bereitstellung von Daten in einem geeigneten Format für die weitere Analyse bzw. Verarbeitung nimmt oftmals einen großen Teil der Arbeitszeit in Anspruch.

OLTP vs. OLAP: Online-Transaction-Processing (OLTP) und Online Analytical Processing (OLAP) bezeichnen zwei Benutzungsparadigmen von Datenbanksystemen. OLTP Systeme stellen die korrekte Abwicklung von Transaktionen eines Geschäftsvorganges sicher. Damit ist beispielsweise ein versehentliches Überschreiben eines Wertes von einer Transaktion A durch eine noch nicht abgeschlossene, zuvor oder parallel gestartete Transaktion B nicht möglich. Ein OLTP System stellt sicher, dass die Datenbank zu jedem Zeitpunkt einen konsistenten Datenbestand hat – auch bei vielen, parallelen Zugriffen. Die Datenbanksysteme PostgreSQL, MySQL oder MariaDB sind Beispiele für OLAP Systeme.

Während OLTP Systeme auf transaktionale Sicherheit ausgerichtet sind, steht bei OLAP die Durchführung komplexer Analysevorhaben im Vordergrund. Vorhandene Daten sollen aus möglichst unterschiedlichen Sichtweisen betrachtet werden können. Produktverkäufe etwa auf Basis von Regionen, Produktgruppen, Wochentagen und Regalpositionen usw. Durch diese Betrachtung sollen Analysen gewonnen werden, die Management-Entscheidungen unterstützen können. Bei OLAP Systemen müssen keine Transaktionen voneinander abgeschirmt werden, sondern es steht die Performance von Daten-Aggregationen im Vordergrund. Die Open Source Software Clickhouse ist für die Aggregation von großen Datenmengen in sehr kurzer Zeit entwickelt worden.

Die Abfragesprache SQL wird für OLTP/OLAP Systeme verwendet und sollte daher in jedem Fall beherrscht werden.

Apache Hive/Spark: Nach dem Export von Daten aus Quellsystemen durch ETL Vorgänge, werden häufig Analysen auf den Daten durchgeführt. Ein Data Engineer überwacht die Bereitstellung und sichtet die Daten um eine hohe Ausgangsqualität zu gewährleisten. Bei großen Datenmengen kann die Aufbereitung der Daten oft nur noch von Computer-Clustern in annehmbarer Zeit bewerkstelligt werden. Hierzu werden dann Apache Hive Skripte (HQL – Hive Query Language, sehr stark an SQL angelehnt) oder Apache Spark Programme auf einer Hadoop Platform eingesetzt, welche durch Data Engineers erstellt werden. Spark Programme können unter anderem in den Programmiersprachen Python, Scala oder Java geschrieben werden.

Apache Airflow: Die erstellen Apache Hive Scripte bzw. Apache Spark Programme unterstützen in den meisten Fällen wiederkehrende Geschäftsprozesse – Programme und Skripte müssen also regelmäßig ausgeführt werden. Wiederkehrende Aufgaben können mit Schedulern wie Cron, Oozie oder Apache Airflow gesteuert werden. Airflow führt nicht nur die Jobs aus, sondern prüft auch ob diese korrekt ausgeführt wurden, steuert Drittsysteme an und bietet eine grafische Darstellung aller durchzuführenden Jobs.

Data Science

data science

Ein Data Scientist beschäftigt sich unter anderem mit folgenden Themen:

Jupyter Notebook / Apache Zeppelin: Data Science besteht zu einem großen Anteil aus Datenexploration und daraus abzuleitenden Mustern und Hypothesen. Dafür bietet es sich an in einer interaktiven Programmierumgebung Daten zu untersuchen oder zu visualisieren. Im Data Science Bereich hat sich Jupyter Notebook mittlerweile zum Standard für diese Aufgabenbereiche entwickelt. Es gibt sehr viele Plugins um verschiedene Operationen auf den Daten auszuführen. Das folgende Video bietet einen kurzen Überblick: What is Jupyter Notebook?

Apache Spark: Wie auch die Data Engineers nutzen auch die Data Scientists das Apache Spark Framework. Ihr Fokus liegt hierbei auf Bibliotheken wie etwa MLlib bzw. SparkML, welche viele Algorithmen für maschinelles Lernen beinhalteten. Diese können auf bereitgestellten Daten trainiert werden oder es können Daten mit zuvor erstellen Modellen abgeglichen werden.

TensorFlow: Ein weiteres, sehr stark verbreitetes Framework für maschinelles bzw. zur Datenstrom orientierten Programmierung. Dabei ist es flexibel genug um für Einsatzzwecke wie Spracherkennung, Bilderkennung, Textklassifizierung usw. eingesetzt zu werden. TensorFlow wird von über 1500 Github Projekten verwendet. Es ist open source und kann frei verwendet werden.

ScikitLearn: Die freie Bibliothek für Maschinelles lernen erfreut sich ebenfalls großer Beliebtheit. Sie enthält Klassifizierungs-, Regression- und Clusteringalgorithmen. Mit der Programmiersprache Python können Programme erstellt werden, welche diese Bibliothek verwenden.

 

Wir hoffen wir konnten Ihnen einen guten Eindruck von grundlegenden Werkzeugen, Skills und Techniken für Data Engineers und Data Scientists vermitteln, welche hohe Relevanz für den Big Data Fachbereich besitzen. Wir sind gespannt darauf, welche Erfahrungen Sie gemacht haben. Senden Sie uns ihre Erfolgsrezepte, Fragen oder weitere Anregungen gerne per E-Mail an info@skillbyte.de

Wir freuen uns auf Ihre Anregungen!

Maurice KnoppMust-have Ressourcen, Skills und Techniken für Data Engineers und Data Scientists

Related Posts