Apache Spark - 5 Tipps für einen erfolgreichen Start

Apache Spark wird in diesem Jahr 10 Jahre alt. Begonnen 2009 als Projekt an der Universität Berkeley, entwickelte sich Spark zum führenden Framework für verteiltes Rechnen in Clustern und erfreut sich immer noch wachsender Verbreitung. Der Grund dafür liegt vor allem in seiner beispiellosen Vielseitigkeit: Von der lokalen Installation auf einem Laptop bis zum Einsatz auf mächtigen Rechner-Clustern mit mehreren 1.000 Knoten, von der Implementierung von ETL-Prozessen bis zu Real-Time-AI-Anwendungen ist alles denkbar und möglich. Mehr als 1.000 Entwickler und eine aktive Community tragen dazu bei, Spark für immer mehr Anwendungsgebiete nutzbar zu machen.

Wie fängt man an, sich diesem Koloss zu nähern, wie kann man Spark als Anfänger lernen? Ich habe bei null angefangen und mir Spark in den letzten Wochen angeeignet. In diesem Beitrag möchte ich meine dabei gemachten Erfahrungen teilen.

Ein Ziel setzen

Apache Spark ist sehr umfangreich, sodass man sich leicht darin verlieren kann. Um das zu verhindern, habe ich gute Erfahrungen damit gemacht, mir ein konkretes Ziel zu setzen. Dadurch behalte ich leichter den Fokus und lasse mich nicht so leicht dazu verleiten, in (natürlich ebenso interessante) Themen abzudriften.

Ich hatte mir das Ziel gesetzt, die Spark-Zertifizierung von Databricks zu absolvieren. Abgesehen von einem neuen Eintrag im Lebenslauf hat das den Vorteil, dass man sich intensiv auf die Prüfung vorbereiten muss, dabei eine Menge lernt und sich auf die notwendigen Inhalte konzentriert. Dass auch Kenntnisse in einigen in der Praxis wenig relevanten Themen (z. B. RDDs) verlangt werden, war aus meiner Sicht kein Nachteil: Dadurch werden die Grundlagen geschaffen, um das System besser zu verstehen.

Es muss nicht die Zertifizierung sein; andere mögliche Ziele wären z. B. ein konkretes Projekt, das mit Spark umgesetzt werden soll, oder das Durcharbeiten eines Lehrbuchs. Wichtig ist, dass das Ziel einen Leitfaden schafft, an dem man sich orientiert, um angesichts der scheinbar unendlichen Möglichkeiten, die Spark bietet, nicht den Fokus zu verlieren.

Die Lernumgebung installieren

Um Spark (oder jede beliebige Programmiersprache) zu lernen, muss man damit arbeiten. Programmieren lernt man nur durch Programmieren. Deshalb besteht der erste Schritt darin, Spark zu installieren. Die einfachste Möglichkeit dafür ist eine lokale Installation. Von der Download-Seite kann Spark kostenlos heruntergeladen und installiert werden.

Ein wichtiger Punkt ist die Wahl der Programmiersprache und der Entwicklungsumgebung. Spark bietet APIs für die Sprachen Scala (in der Spark geschrieben ist), Python, R und Java. Ich empfehle, eine Sprache zu wählen, die dir schon bekannt ist. Sonst müsstest du die Programmiersprache und Spark gleichzeitig lernen, was meiner Erfahrung nach nicht gut ist. Was ist sprachenspezifisch? Was ist Spark-spezifisch? Das ist für Anfänger, die beides noch nicht kennen, schwer zu unterscheiden.

Ich habe mich bei der Vorbereitung auf die Databricks-Zertifizierung aus dem genannten Grund für Python entschieden. Als Entwicklungsumgebung benutze ich Jupyter Notebooks, da damit Programmcode, Kommentare und Notizen sehr bequem an einem Ort gespeichert werden können.

Grundlagenkurs durcharbeiten

Jetzt ist es an der Zeit, mit dem Lernen anzufangen. Aus meiner Sicht gibt es dafür zwei Möglichkeiten: Entweder du arbeitest einen Grundlagenkurs durch (der zu deinem gewählten Ziel passt, s. o.), oder du benutzt die Spark-Dokumentation. Letztere enthält die Programming Guides, die im Stil eines Lehrbuchs die Kernkomponenten von Spark (RDDs, strukturierte APIs, Streaming, Machine Learning, Graph Processing) erläutern. Alle Code-Beispiele sind dabei wahlweise in Scala, Java oder Python verfügbar. In einem separaten Kapitel wird SparkR (R auf Spark) behandelt. Darüber hinaus gibt es natürlich die formalen Klassen-Dokumentationen für Scala, Java, Python und R.

Ich habe mich für die erste Methode entschieden, indem ich das Buch Spark: The Definitive Guide von Bill Chambers und Matei Zaharia durchgearbeitet habe. Wenig überraschend gibt es eine große Auswahl an Grundlagenbüchern zu Apache Spark; ich habe dieses gewählt, weil es von den führenden Entwicklern von Spark geschrieben wurde, die auch Databricks gegründet haben. Databricks wiederum ist der Anbieter der Zertifizierung, die ich anstrebte.

Ob du mit einem Buch lernst, mit Videos oder mit E-Learning, ist vor allem Geschmacksache. Der eine lernt besser per Video-Sessions, ich habe für mich festgestellt, dass ich Bücher vorziehe. Bücher haben für mich die großen Vorteile, dass ich im eigenen Tempo lerne und Dinge schnell wieder nachschlagen kann (besonders bei der Verwendung von E-Books).

Wichtig ist aus meiner Sicht, mit den Grundlagen anzufangen und sich erst danach zu den spezielleren Themen vorzuarbeiten. Ein guter Start ist der erste Teil von Spark: The Definitive Guide, „A Gentle Introduction to Apache Spark“, der frei verfügbar ist. Nach einem Überblick empfehle ich unbedingt, sich in die strukturierten APIs (DataFrames, Spark SQL) zu vertiefen; dies ist die Grundlage aller nachfolgenden speziellen Themen. Die Low-Level-APIs (RDDs) sind heute in der Praxis weniger wichtig und müssen m. E. nicht studiert werden, es sei denn, du strebst die Databricks-Zertifizierung an; dort werden RDDs immer noch ausführlich abgefragt.

Spezialthemen vertiefen

Nach dem Studium der Grundlagen kommen die spezielleren Themen an die Reihe: Je nach deinem Ziel (s. o.) könnte das Machine Learning, Structured Streaming oder Graphen-Verarbeitung sein. All diese Themen werden im Buch von Chambers und Zaharia mehr oder weniger ausführlich behandelt.

Bei diesen Themen habe ich die Erfahrung gemacht, dass es sich lohnt, die Programming Guides in der Spark-Dokumentation anzuschauen. Gerade für die genannten Themen gibt es hier hervorragende, aber nicht zu ausschweifende Erklärungen mit entsprechenden Code-Beispielen in Python, Java und Scala.

Eigenes Projekt entwickeln

Nachdem du jetzt das nötige Wissen aufgebaut hast, ist es an der Zeit, dieses in die Praxis umzusetzen. Während du Bücher gelesen oder Onlinekurse besucht hast, hast du zwar schon eine Menge Code geschrieben, es war aber normalerweise nicht dein eigener.

Suche dir eine konkrete Aufgabe. Das kann ein Machine-Learning-Problem sein (interessante Datensätze gibt es hier oder hier) oder die Erzeugung eines Reports durch Aufbereitung und Transformation von Datenbanktabellen. Am besten wäre, eine Aufgabe aus der eigenen Arbeit zu bearbeiten.

Programmieren lernt man nur durch Programmieren. Deshalb wirst du umso besser in Spark, je mehr du damit arbeitest.

Zusammenfassung

Der Einstieg in Apache Spark ist leichter, als man es sich als Anfänger vorstellt. Eine lokale Installation auf dem eigenen Laptop ist ohne großen Aufwand möglich, und es gibt gute, auch frei verfügbare Lehrbücher und Tutorials. Am wichtigsten ist die konkrete Arbeit mit Spark, für den Start am besten mit einem kleinen eigenen Projekt.


Peter-Gerngross

Kontakt

Peter Gerngross
Senior Consultant
DE +49 89 122 281 110
CH +41 44 585 39 80
marketing@btelligent.com
Views: 219
clear