BI Consultant Getting Started mit PySpark Notebooks
Du bist Business Intelligence Consultant und möchtest gerne Python lernen, um die Vorteile von Pyspark in deine Ladeprozesse zu integrieren und fragst dich, wie du am besten anfängst?
Dann bist Du hier genau richtig!
Vor ein paar Monaten stand ich vor derselben Frage und möchte dir gerne einen Einblick geben, wie Du am besten in das Thema schnell einsteigen kannst.
Zu den Aufgaben eines BI-Consultants gehören u.a. der Aufbau einer Datenplattform und das Entwickeln von Dashboards, die auf diese Datenbasis zugreifen. Dabei sind beispielsweise auf der Microsoft Data Platform einige ETL-Tools im Einsatz, wie beispielsweise Azure Data Factory, Azure Synapse Analytics, Microsoft Integration Services (SSIS) etc. Sie bieten Funktionalitäten an, Daten verschiedener Quellen zu extrahieren, filtern, transformieren und schließlich an einem Zielort zu bewegen.
Vor allem bei Cloud-basierten Lösungen wie Azure Synapse hat man die Möglichkeit, Pyspark-Notebooks zu nutzen, die diese Grundfunktionalitäten erweitern und somit insgesamt ein mächtiges und flexibles ETL-Framework bilden. Ein weiterer Vorteil von Pyspark Notesbooks ist die Möglichkeit den Quellcode durch sogenannte Markdown-Zellen mit zusätzlichen, wertvollen Prozess-Informationen anzureichern und so eine Dokumentation bereit zu stellen.
Der Allgemeine Einstieg in Python und Wissensaufbau im Selbststudium
Es gibt zahlreiche Tutorials über Python in Youtube-Kanälen oder auch auf Udemy. Vor allem beinhalten viele davon neben einem kurzen Einblick in die grundlegende Syntax auch Beispiele für Data Science Themen wie Anwendung von maschinellen Lernverfahren.
Bevor Du in Python direkt zu den Themen Daten lesen, laden, schreiben etc. einsteigst, ist es empfehlenswert, die Grundlagen von Python zu lernen und darauf aufbauend direkt in die datengetriebenen APIs einzusteigen.
Dabei sind folgende Themen am Anfang besonders interessant, wenn du noch nie mit Python vorher entwickelt hast:
- Grundlagen in Python wie
- Umgang und Syntax von Variablen, Methoden, Kontrollstrukturen, effizienter Zugriff auf Dictionary, Arrays, Zeichenketten etc.
- Datentypen
- Funktonen und Lambda-Funktionen
- Objektorientierung
- Importieren von Klassen oder Paketen
Empfehlenswert ist der Udemy-Kurs: Python Bootcamp: der Einstiegskurs:
https://www.udemy.com/course/python-kurs/
Weitere Inhalte über Daten lesen, transformieren und exportieren:
- Datenformate wie Dataframes, RDD und welche Methoden damit möglich sind
- Spezielle Formate wie Parquet-Dateien oder Delta-Format (Deltalake):
Die Entwicklungsumgebung
Im ersten Schritt kann ich Dir empfehlen, Anaconda zu installieren: https://www.anaconda.com/products/individual
Das hat den Vorteil, dass du direkt ein Jupyter-Notebook öffnen und loslegen kannst, ohne Dir groß Gedanken über Verzeichnisse, Kompilierungen etc. zu machen (wie man es z.B. von Java kennt).
Wenn du bereits in einer der großen Public Clouds wie Azure, AWS oder GCP unterwegs bist kannst du alternativ auch kostenlos die Community-Version von Databricks nutzen: https://databricks.com/de/
Das Wichtigste: Learning by doing
Im nächsten Schritt war es mir wichtig, das neue Wissen zeitnah im Projekt anzuwenden. In der Regel gibt es genügend Gelegenheiten, dies auch in einem BI Projekt zu tun. Glücklicherweise war ich zeitgleich in einem Dataplatform in der Rolle eines Data Engineers im Einsatz. Dort wurden die Datenladeprozesse mit PySpark-Notebooks in einer Synapse-Umgebung entwickelt und über Data Pipelines orchestriert bzw. aufgerufen. Auf die Besonderheiten gehe ich im Kapitel „Pyspark in Synapse“ detaillierter darauf ein.
Du hast aber gerade kein Projekt und möchtest dich trotzdem in das Thema vertiefen?
In dem Fall kannst du dir ein eigenes kleines Datenprojekt zu einem Thema, welches dich interessiert bauen. Es gibt viele Plattformen, wo du dir kostenlos Beispiel-Daten downloaden kannst, wie hier von ECDC: https://www.ecdc.europa.eu/en
Hier kannst du dir Tabellen als CSV runterladen und dir deine eigene Datenbasis schaffen. Bau Dir ein kleines Notebook oder lokales Python Skript mit folgenden generischen Funktionen:
- Laden einer Tabelle
- Schreiben einer Datenquelle in ein Ziel
- Löschen einer Spalte
- …
Dieses Notebook oder Python-Skript, nachfolgend Bibliothek oder auch Library genannt, importierst du Dir in einem weiteren Notebook/Python-Skript und verwendest diese Funktionen zum Aufbau eines eigenen Datenprojektes. Du kannst dabei auf folgende Dokumentation zugreifen: https://sparkbyexamples.com/
Experimentiere was mit Data Frames alles möglich ist, wie das Generieren aggregierter Kennzahlen oder neue aggregierte Tabellen und visualisiere sie anschließend in Power BI.
Was ist der Vorteil des Arbeitens mit Notebooks?
Ein großer Vorteil von Pyspark-Notebooks in ETL-Prozessen ist die schnelle Verarbeitung großer Datenmengen. Verknüpft man die Methoden von Azure Data Factory mit denen von Pyspark, erhält man ein mächtiges Werkzeug. Einige der Vorteile möchte ich dir im Folgenden kurz skizzieren:
- bessere Lesbarkeit bei Verzweigungen innerhalb der data pipelines:
- For-Schleifen schachteln innerhalb der Azure Data Factory geht beliebig oft, indem man sogenannte Child-Pipelines implementiert, die dann aufgerufen werden können. Darunter leidet allerdings die Lesbarkeit erheblich. Am besten man lagert for-Schleifen in die Notebooks aus. Das erhöht die Lesbarkeit erheblich und man hat eine überschaubare Anzahl an Pipelines. Man muss allerdings aufpassen, dass Notebooks nicht innerhalb von for-Schleifen mit mehreren Iterationen aufgerufen werden. Das kann möglicherweise zu hohen Laufzeiten führen, da sonst bei jeder Iteration der Schleife ein Start der Spark-Session ausgelöst wird. Je nach Anzahl der Iterationen dauert dies entsprechend lange.
- Fehlermeldungen und Warnungen mithilfe von Logging
- Mithilfe von Package „sc._jvm.org.apache.log4j“ kannst du Warnungen, Informationen und Fehlermeldungen erzeugen, die an das Monitoring weitergeleitet werden.
- Dokumentation:
- Neben den Zellen innerhalb der Notebooks hast du sogenannte Markdowns, die für eine ausführliche Dokumentation der einzelnen Abschnitte eingesetzt werden können.
- Delta Lake bietet die Möglichkeit deine Parquet-Dateien im sogenannten Delta-Format zu speichern. Das bedeutet, du hast hier die Möglichkeit, deine Parquet-Dateien zu aktualisieren, einzelnen Zeilen zu löschen und sogar auch Merge-Operationen anzuwenden: https://docs.delta.io/latest/quick-start.html#update-table-data . Weiterhin wird deine Tabelle hier versioniert, das heißt du kannst jederzeit eine ältere Version der Tabelle wiederherstellen. Dieser Vorgang wird als Time Travel bezeichnet: https://docs.delta.io/latest/quick-start.html#-read-older-versions-of-data-using-time-travel
Neue Notebooks kannst Du einfach innerhalb des Entwicklungsbereiches anlegen.
Pyspark-Notebooks in Azure Synapse
Azure Synapse ist ein Azure-Dienst, welcher verschiedene Analysedienste verknüpft. Dazu gehören unter anderem Azure Data Factory, Datalake und Big-Data-Analysen. Es können auch Abfragen auf serverlosen und dedizierten Quellen durchgeführt werden.
Somit können auch in den Data Factory-Pipeline Pyspark Notebooks innerhalb der Orchestrierung aufgerufen werden.
Wie kann ich packages importieren?
Eine library ist eine Sammlung von Python Skripten, welche Hilfsmethoden zur Verfügung stellen. Diese kannst du dann einmalig in deinem Notebook importieren und beliebig wiederverwenden.
Im ersten Schritt musst du diese Skripte einmal in deine Synapse-Umgebung importieren und dem Spark-Pool zuweisen.
Unter Verwaltung kannst du unter „Code libraries“ –> „Workspace Packages“ deine importierten Bibliotheken sehen oder auch neue Packages hinzufügen, welche du in deinen Notebooks verwenden möchtest.
Um die Packages im Notebook anschließend verwenden zu können, musst Du die importierten packages dem Spark-pool zuweisen:
Als nächstes siehst Du, welche importierten Packages dem Pool bereits zugewiesen sind und kannst hier neu importierte Packages übernehmen. Wichtig hierbei ist, dass sie in deiner Synapse-Umgebung bereits vorhanden sind.
Ein weiteres Utility-Packet, was ich dir empfehlen kann, ist „notebookutils“, hier in der Microsoft-Dokumentation beschrieben:
Dies ist besonders hilfreich, wenn du Datenstrukturen innerhalb des Datalakes verwendest und bietet dir zahlreiche Methoden zur Verwaltung dieser.
Wie kann ich Notebooks in data pipelines integrieren?
Innerhalb der Pipeline steht im Aktivitätsbereich eine weitere Kategorie „Synapse“ zur Verfügung, wo du eine Aktivität „Notebook“ in die Pipeline aufnehmen kannst. Hier wählst du dein entwickeltes Notebook aus und kannst definierte Variablen oder Parameter an das Notebook übergeben.
Was muss ich dabei beachten?
Wenn du Parameter im Notebook deklarierst, welche von außen aus der Azure Data Factory pipeline kommen sollen, ist es wichtig diese Parameter in der Zelle zu markieren. Das erreichst Du wie im nebenstehenden Bild gezeigt.
Falls du Notebooks innerhalb von Schleifen aufrufst, achte darauf das bei jedem Notebook-Aufruf eine Spark Session gestartet wird. Das kann pro Iteration bis zu 2 Minuten dauern.
Wie kann ich meine Spark-Session monitoren?
Im Monitoring Bereich kannst du dir einen Überblick aller laufenden und abgeschlossenen Spark Sessions verschaffen. Unter Apache Spark Applications erhältst du folgende Übersicht:
Hier hast du auch die Möglichkeit, laufende Spark Sessions abzubrechen oder spezielle Fehlermeldungen zu sehen. Des Weiteren siehst du hier, welches Notebook von welchen Prozess oder User unter diesen Sessions ausgeführt wird. Außerdem kannst du die Logs der Notebooks einsehen.
Solltest du innerhalb der Notebooks eigene Warnungen, Fehlerevents oder Logging-Informationen implementieren, so würdest du diese hier nachverfolgen können.
Solltest du innerhalb der Notebooks eigene Warnungen, Fehlerevents oder Logging-Informationen implementieren, so würdest du diese hier nachverfolgen können.
Fazit
Zum Abschluss habe ich hier nochmal eine Liste für dich, was mir persönlich den Einstieg erleichtert hat:
- Udemy Kurs bzw. Tutorial anschauen und durchführen
- Schnell themenspezifisch in Dataframes/rdd einsteigen und ein kleines Projekt umsetzen
- Eigene Bibliothek an Funktionen anlegen und diese dann über Notebook aufrufen, diese kannst du immer weiter erweitern
Am wichtigsten war vor allem die direkte zeitnahe Anwendung von Python und ich kann dir daher sehr empfehlen, eigene Notebooks zu schreiben.
Viel Spaß dabei.
Daniela Wecker
scieneer
Wir unterstützen Sie gerne auch bei Ihrem Daten-Projekt, vereinbaren Sie ein unverbindliches Beratungsgespräch mit einem unserer Experten!
Klicke hier, um Ihren eigenen Text einzufügen