Apache Spark 2.2.0: CSV-Dateien einlesen, bereinigen und erste Analysen durchführen

Posted by in Allgemein

Nachdem ich in meinem letzten Blog die Installation von Apache 2.2.0 unter Linux erklärt habe, will ich heute ein kleines Anwendungsbeispiel besprechen.

Der Datensatz den ich verwende, enthält die Ergebnisse des Stackoverflow Developer Surveys 2017 im CSV-Format.

Die Spark-Shell

Verwendet man die Spark-Shell, dann brauchen die SparkSession und der SparkContext nicht initialisiert werden. Erstere wird in diesem Blog verwendet, um die Daten einzulesen, zu bereinigen und schließlich eine erste einfache Analyse durchzuführen.

Die Frage, die ich mir gestellt habe, war: Was motiviert eigentlich Entwickler?

Dazu habe ich den Fragenkatalog durchforstet und bin auf die Frage Q250 gestoßen, in der man 17 Aussagen auf einer Likert-Skala einordnen soll. Die für mich interessanten Aussagen sind die Folgenden:

  • Learning new technologies is fun
  • There’s a right and a wrong way to do everything
  • I like to challenge myself
  • I want to change the world

Ich wollte aus den Ergebnissen herausfiltern, wie viele der Entwickler diese Aussagen mit Strongly agree und Agree beantwortet haben.

Einlesen

Als Erstes gilt es den Datensatz einzulesen. Anschließend wird noch dessen Größe kontrolliert. Das Ganze wird über die von der Spark-Shell bereitgestellte SparkSession spark erledigt.

Bereinigen

Über die mitgelieferte Schema-CSV-Datei der Ergebnisse habe ich die benötigten Spalten der CSV-Datei herausgesucht. Für die Fragestellung werden die Spalten 31-47 benötigt. Den Rest filtern wir heraus. Dabei kommt nicht direkt Spark zum Einsatz, sondern die Methode filter(…) von Scala, die zweimal hintereinander angewendet wird. Das funktioniert, da die Spalten, die mit sr.columns aus dem DataFrame sr ausgelesen werden, ein Scala-Array sind. Als Ergebnis sind in der Variable toKeepColumns nur noch die Namen der Spalten enthalten, die benötigt werden.

Anschließend wird der DataFrame auf die benötigten Spalten reduziert:

Da die Frage nur an 50 % der Teilnehmer der Umfrage ausgeliefert wurde, müssen Zeilen, die nur NA enthalten ebenfalls entfernt werden:

Außerdem noch die Spalten auf die vier weiter oben genannten Aussagen eindampfen:

Für mich stellte sich dann die Frage, ob das alles so richtig war. Dazu habe ich die ersten fünf Datensätze ausgeben lassen:

Sieht so weit ganz gut aus 🙂

Einfache Analyse

Für diesen Blogpost reicht es aus, eine einfache Analyse vorzunehmen.

Die Fragestellung: Wie viel Prozent der Teilnehmer haben Spaß am Lernen neuer Technologien?

Das Ergebnis ist umwerfend. Fast alle Teilnehmer (93,02 %) geben an, dass es ihnen Spaß macht neue Technologien zu lernen!

Fazit

Mit ein paar einfachen Befehlen und rudimentären Scala-Kenntnissen lassen sich durch Apache Spark spannende Analysen von großen Datenmengen erstellen. Der Umgang war etwas ungewohnt, da ich viel in der API stöbern musste. Nach einer guten Stunde hatte ich aber das vorliegende Ergebnis und konnte damit einen ersten Erfolg verbuchen 🙂 . Noch dazu hat es viel Spaß gemacht. Für einen zukünftigen Blogpost werde ich noch mehr Analysen vornehmen und die Ergebnisse dann vorstellen!

Bis dahin kann ich nur empfehlen, Apache Spark einmal auszuprobieren!