© DrHitch/Shutterstock.com
Big Data, Fast Data

4 Streaming-Apps mit Kafka, Spark und Cassandra


Im zweiten Kapitel wurde die Ingestion von Daten in ein Kafka-Cluster beschrieben. Nun sollen diese Events natürlich verarbeitet und gespeichert werden. Möglicherweise sollen dabei auch die Vorgänge eines Events berücksichtigt oder ein interner Zustand aktualisiert werden. Außerdem ist es denkbar, die Daten des Streams mit weiteren Informationsquellen zusammenzuführen. All dies ist mit Spark und Cassandra möglich.

Die Entwicklung von Apache Spark [1] hatte zunächst den Fokus, eine Alternative zu MapReduce im Hadoop-Ökosystem anzubieten. Während es auch heute noch sehr häufig im Hadoop-Umfeld eingesetzt wird und in allen großen Hadoop-Distributionen enthalten ist, hat sich das Projekt stetig weiterentwickelt. Ebenso ist die Anzahl der Konnektoren zur Integration mit anderen Tools gewachsen. Spark ist für den Einsatz in verteilten Umgebungen vorgesehen und setzt auf ein – im Vergleich zu MapReduce – einfaches und flexibles Programmiermodell mit einem intuitiven, ausdrucksstarken API. Außerdem verbessert es die Performance für komplexe Jobs, indem große Teile der Berechnung im Speicher durchgeführt werden. Spark ist vollständig in Scala implementiert und bietet neben einem Scala-API auch Java-, Python-, SQL- und R-Schnittstellen.

Das API von Spark ist an das Collections API von Scala angelehnt und ähnelt ebenso den Streams in Java 8. Alle Beispiele in diesem Kapitel sind in Scala geschrieben, lassen sich aber ohne größeren Aufwand auch mit Java 8 abbilden. Listing 4.1 beschreibt einen WordCount in Spark. Dieser kann mittels Spark Shell ausgeführt werden (Kasten: „Spark Shell ausführen“).

val file = sc.textFile("README.txt")
val words = file.flatMap(line => line.split(" "))
val wordCount = words.map(word => (word,1)).reduceByKey((a,b) => a+b)
wordCount.foreach(println)

Listing 4.1

Spark Shell ausführen

Die Spark Shell ist eine Scala REPL, in der bereits ein fertig initialisierter SparkContext bereitsteht. Die Shell kann lokal ausgeführt werden, ohne einen Spark-Cluster aufzusetzen. Dazu muss unter [2] die Spark-Distribution heruntergeladen und entpackt werden. Die REPL findet sich anschließend in <SPARK_DIR>/bin/spark-shell. Zusätzlich können über die --packages weitere Bibliotheken hinzugefügt werden, die unter [3] zu finden sind. Alle Beispiele in diesem Kapitel wurden mit der Version 1.6.1, „pre-built for Hadoop 2.6 or later“ erstellt.

Der SparkContext, häufig sc abgekürzt, ist der Einstieg in jede Spark-Anwendung. In diesem wird beispielsweise der Name de...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang