Guter Hands-on Einstieg in Apache Spark

July 06, 2015

Wer die Grundlagen von Spark lernen möchte, ist mit dem Buch “Learning Spark” gut beraten. Mir hat besonders gut gefallen, dass das Buch sehr praxisorientiert ist und man nebenbei mit der Spark-Shell die Beispiele ausprobieren und nachvollziehen kann.

Auch die Beschreibung des Anlegens eines Clusters in Kapitel 7 fand ich sehr hilfreich.

Um von diesem Buch zu profitieren sollte man schon fortgeschrittene Programmierkenntnisse in Python, Scala oder Java haben. MapReduce braucht man nicht zu kennen.

Leider werden die Themen GraphX und SparkR nicht behandelt.

Die meisten Beispiele werden in den drei Sprachen Python, Scala und Java 7 angegeben. Leider wurde hier nicht Java 8 verwendet, so dass die Beispiele sehr asymmetrisch sind. Der Java 7 Code macht das Buch fast kaputt. Allerdings muss man zur Entschuldigung der Autoren auch sagen, dass im Hadoop-Bereich der Umstieg auf Java 8 noch nicht durchgeführt wurde.

Hier haben sich manchmal auch Übersetzungsfehler eingeschlichen und die Programme sind nicht immer gleich (z. B. die VerifyCallLogs() in Java fehlen in den anderen Versionen, 6-18).

Anhand von Beispiel 4-25, dem “Scala Page Rank”, habe ich selber gelernt, dass Typenformationen auch hilfreich sein können. Die Beispiele in Python und Scala sind zwar kurz und knapp, aber mir fehlen unten in der Schleife die Datentypen zum Verständnis. Das ist so kein Code, den man sofort versteht. Ich werde also in Scala meine Transformationen freiwillig mit Typen kennzeichnen, damit sie besser lesbar sind.

Im Abschnitt “Spark SQL Performance” klingt das ein wenig so, als ob die Autoren auch die Entwickler von Spark SQL sind a la “Guck mal unser tolles System”. Hier sind sie ein wenig unkritisch, denn SQL-Optimierung ist ein sehr weiter und komplizierter Bereich und bei Spark-SQL wohl noch nicht auf dem Stand der traditionellen SQL-Datenbanken.

Das Beispiel in “Machine Learning Basics” ist für den Einstieg meiner Meinung nach zu kompliziert. Und im Beispiel 6-12 benutzen die Autoren ein Anti-Pattern, da wird gegen die konkrete Implementierung ArrayList und nicht gegen das Interface List programmiert.

Und - last but not least - das Buch heißt “Learning”. Warum gibt es dann keine Übungen oder Aufgaben? Eventuell sogar mit Lösungen im Anhang?

Aber insgesamt gesehen ein guter und gelungener Einstieg.

  • Holden Karau, Andy Konwinski, Patrick Wendell, Matei Zaharia
  • Learning Spark
  • O’Reilly
  • 2015

Siehe auch die Renzension bei Amazon.