Datascience on Apache Spark

Apache Spark™ ist ein Werkzeug zur Verarbeitung und Analyse von großen Datenmengen.

Üblicherweise kommt in Big Data Szenarien, die auf Apache Spark™ laufen, schnell der Wunsch auf, diese großen Datenmengen auch analysieren zu können. Ich habe mir für solche Aufgaben das Statistikpaket „R“ und eine spezielle Bibliothek angesehen, um herauszufinden, ob sich hiermit solche Aufgaben erledigen lassen.

Apache Spark™

Apache Spark (siehe Links am Artikelende) kann eingesetzt werden, um große Datenmengen zu verarbeiten, und zu analysieren. Neben der eigentlichen Plattform besteht die Software aus zusätzlichen Modulen, die Themen wie SQL, Data-Streaming, Machine Learning und Visualisierung abdecken.

Man kann in Spark mit unterschiedlichen Programmiersprachen entwickeln (Java, Python, Scala und R). Auf der Homepage finden sich unterschiedliche Beispiele, mit denen der jeweilige Programmcode verglichen werden kann. Hierbei fällt auf: Speziell der R Programmcode ist für mathematisch-statistische Berechnungen prädestiniert, und äußerst kompakt.

Spark verwendet sogenannte „Resilient Distributed Datasets (RDDs)“ um auf die Daten zuzugreifen. Mit Hilfe spezieller Bibliotheken lassen sich diese Datasets in R einbinden. Damit kann man dann Spark Daten in dem Statistikpaket R verarbeiten.

Zwei bekannte Bibliotheken sind das „SparkR“ – Paket, und das „sparklyr“ – Paket, das einen größeren Funktionsumfang aufweist.

sparklyr

sparklyr setzt auf Apache Spark auf und beinhaltet mehrere Bibliotheken. Mit diesem Interface lassen sich laut Beschreibung in „sparklyr — R interface for Apache Spark“ die folgenden Arbeiten erledigen:

  • „Interactively manipulate Spark data using both dplyr and SQL (via DBI).
  • Filter and aggregate Spark datasets then bring them into R for analysis and visualization.
  • Orchestrate distributed machine learning from R using either Spark MLlib or H2O SparkingWater.
  • Create extensions that call the full Spark API and provide interfaces to Spark packages.
  • Integrated support for establishing Spark connections and browsing Spark data frames within the RStudio IDE.“

Speziell die Anbindung an R, und die Möglichkeit Machine Learning anzubinden, ist für die Statistiker und Datenwissenschaftler interessant.

Artikel „sparklyr: a test drive on YARN“ erklärt, wie man das Paket in einem ersten Test benutzt, und welche Spezifika es aufweist. Demnach kann man lokal arbeiten, oder über eine Serverinstallation. Wobei die letztgenannte Methode Vorteile hat. In dem Artikel wird ein kleines neuronales Netz gezeigt, und es läßt sich erkennen, wie man mit dieser Technologie arbeitet.

Der Blogpost „Predicting food preferences with sparklyr (machine learning)“ zeigt ein größeres Beispiel, dass aus Analytics und aus Machine Learning Anteilen besteht. Der Artikel zeigt zu Beginn, wie man die Bibliothek installiert, und mit der Bibliothek für das Machine Learning umgeht.

Der Autor hat vor über das Machine Learning Vorhersagen zu machen, wem welche Landesküche besonders gut schmeckt. Da er die Daten nicht kennt, fängt er mit einigen einfachen Analysen und Grafiken an, die ihm den Datengehalt zeigen. Hierbei lernt man wie einfach es ist, Daten in R zu analysieren.

Weiterhin lernt man in dem Artikel, wie man mit fehlenden Messungen umgeht, und wie man Daten transformiert. Nachdem er die Daten besser kennt (und der Leser einen  besseren Eindruck in die Funktionsweise von R), geht er mit seinen Berechnungen auf Spark. Dort zeigt er, wie man eine Principal Component Analysis (PCA) durchführt, die das Machine Learning Modul bietet.

Zum Schluss geht er darauf ein, wie man ein neuronales Netz modelliert. Auf der Homepage des sparklyr Projekts findet man hierbei Angaben über die unterschiedlichen Machine Learning Algorithmen, die zur Verfügung stehen. Er verwendet einen Random Forest Algorithmus und zeigt in der Auswertung, welche Resultate es liefert, und diskutiert die Vor- und Nachteile.

Fazit

sparklyr, Apache Spark und R scheinen mir eine sinnvolle Kombination zu sein, um große Datenmengen zu analysieren und mit Hilfe von Machine Learning auszuwerten.

Speziell der letztgenannte Artikel hat jedoch gezeigt, dass eine längere Einarbeitungsphase notwendig ist, um hiermit Sicherheit zu erlangen.

Weiterführende Informationen

Das Original dieses Artikels ist auf Der Produktmanager erschienen (©Andreas Rudolph). Folgeartikel zum Thema gibt es über die (→Mailingliste), oder indem Sie →mir auf Twitter folgen.

Alle hier verwendeten Namen gehören den jeweiligen Inhabern der Rechte.

In der Online Version des Artikels finden Sie hier die versprochenen weiterführenden Links:

Comments are closed.