iX 8/2018
S. 126
Wissen
Big Data
Aufmacherbild

Erweiterungen und Tools für das Datenverarbeitungsframework Spark

Nachbrenner

Um Spark hat sich im Laufe der Zeit ein riesiges Ökosystem an Extensions für die unterschiedlichsten Einsatzzwecke entwickelt. Der Artikel stellt eine thematisch gegliederte Auswahl vor.

Das offene Apache Spark und sein kommerzieller Bruder, die DataBricks Runtime, sind im Bereich (Big) Data Engineering, Datenanalyse und Machine Learning für viele Unternehmen die erste Wahl. Zu einem großen Teil liegt das an der Flexibilität, der Quelloffenheit und der damit einhergehenden Marktdurchdringung. Im Laufe der letzten Jahre sind eine Vielzahl von Erweiterungen für Spark erschienen. Unternehmen, Institutionen und Privatpersonen haben dazu beigetragen, dass Spark weit mehr ist als nur ein weiteres Framework für Cluster Computing.

Alle großen Anbieter von Hadoop-Distributionen wie Cloudera, Hortonworks oder MapR bieten Unterstützung für Spark innerhalb ihrer Systeme. In der Cloud bekommt man Spark bei Microsoft in Form von Azure HDInsight [1], bei Google mit Cloud Dataproc [2], bei Amazon mit Elastic Map Reduce [3] und bei IBM mit IBM Analyics for Apache Spark [4]. (Alle Links zum Artikel finden sich unter ix.de/ix1808126.)

Auch klassische Großunternehmen wie SAP bieten Erweiterungen, die eine Weiterverarbeitung der Daten ihrer Anwendungen in Spark ermöglichen. So lassen sich mit SAPs In-Memory-Engine Vora 2.0 [5] Daten direkt in Spark Dataframes einlesen oder in Vora-Tabellen persistieren. Für die hauseigene Produktlinie HANA ist der Spark Controller 2.0 [6] für die Anbindung zuständig. In-Memory Daten aus den SAP-HANA-Systemen können dabei problemlos in Spark übertragen werden, die entsprechende Konfiguration von Smart Data Access – HANAs virtuelle Zugriffsschicht – vorausgesetzt.

An der Quelle

Am Anfang eines jeden Spark-Jobs stehen die Daten. Je nach Dateisystem und Format gibt es verschiedene Möglichkeiten, den wertvollen Rohstoff in die Spark-typischen Resilient Distributed Datasets (RDDs) zu überführen. Seit 2015 existiert in Spark mit der Dataframe API eine universelle Schnittstelle, die wiederum über verschiedene Konnektoren verfügt. Am einfachsten gelingt der Import über bereits vorhandene JDBC-Konnektoren. Für andere Datenquellen und Dateiformate gibt es verschiedene Möglichkeiten. So bietet DataBricks selbst eine ganze Reihe dieser Konnektoren über GitHub an. Neben einer verbesserten CSV-Schnittstelle [7], die bereits Einzug in Spark 2 gehalten hat, sowie Konnektoren für Dateien im XML- [8] und Apache-Avro-Format [9] findet man hier zum Beispiel auch eine (noch experimentelle) Anbindung für TensorFlow, mit deren Hilfe sich Spark Dataframes mit TensorFlow-Anwendungen nutzen lassen [10].

Die Verarbeitung von Daten aus Microsoft Excel ist dank der freien Bibliothek spark-excel [11] möglich. Die von der Berliner Crealytics GmbH auf GitHub zur Verfügung gestellte Erweiterung ermöglicht nicht nur das Einlesen von Excel-Dateien, sondern auch das Schreiben über die Dataframe-Schnittstelle. Für Google Sheets hat der Japaner Katsunori Kanda einen Konnektor entwickelt [12].

Neben den unterschiedlichen Dateiformat-Konnektoren gibt es auch viele Erweiterungen zur direkten Anbindung von Datenbanken. So liefert DataBricks einen speziellen Konnektor für das AWS Redshift Data Warehouse [13]. Die Firma DataStax, Anbieter von Enterprise-Dienstleistungen rund um das verteilte Datenbankmanagementssystem Cassandra, bietet für die Spark-Anbindung gleich einen eigenen Konnektor [14]. Für die dokumentenbasierte Datenbank MongoDB erhält man vom gleichnamigen Unternehmen ebenfalls eine offizielle Erweiterung[15]. Auch für die in Erlang geschriebene Datenbank Riak findet sich von deren Erbauer der passende RDD- und Dataframe-Konnektor [16].

Seit Sommer 2016 dient das unter Federführung des Jet Propulsion Lab der NASA entstandene Projekt Apache Bahir [17] als Sammelstelle für Konnektoren. Zu den dort beheimateten Spark-Erweiterungen zählen unter anderem ein CouchDB-Konnektor, ein Konnektor für das Akka-Framework sowie für MQTT-Datenquellen. Auch liefert Bahir Streaming-Konnektoren, die Twitter- und ZeroMQ-Daten in Spark einspeisen.

Datenströme kanalisieren und analysieren

Streaming-Konnektoren sind überall dort gefragt, wo viele Sensor- oder Webanalytics-Daten in Echtzeit verarbeitet werden sollen. Zu den wichtigsten Einsatzgebieten gehören IoT-, Online-Marketing- und E-Commerce-Systeme. Das von LinkedIn entwickelte Tool Kafka, das seit 2012 unter dem Dach der Apache Foundation beheimatet ist, wird hier in vielen Fällen das Mittel der Wahl sein.