Spark ist ein verteiltes In-Memory-Compute-Framework. Es bietet eine Plattform für die Aufnahme, Analyse und Abfrage von Daten. Zusätzlich zu den High-Level-APIs in Java, Scala, Python und R verfügt Spark über ein umfassendes Ökosystem von Anwendungen, einschließlich Spark SQL (strukturierte Daten), MLlib (maschinelles Lernen), GraphX (Diagrammdaten) und Spark Streaming (Mikro-Batch-Datenströme).
Apache Spark wurde 2009 an der UC Berkeley entwickelt und ist sehr gut für interaktive Abfragen und Analysen von extrem großen Datensätzen geeignet. Es wird von AWS auf Elastic-MapReduce und Databricks in der Cloud bereitgestellt, kann jedoch auch On-Premise eingesetzt werden. Spark lässt sich zur Bewältigung von Petabyte an Daten auf Tausende von Geräten skalieren.
Da Spark eine Plattform ist, verfügt es über zahlreiche APIs mit einem umfassenden Ökosystem an Anwendungen. Spark funktioniert sehr gut mit einer großen Vielzahl von Datensätzen. Insofern ist es gut geeignet, um viele Anforderungen innerhalb eines einzigen Unternehmens zu erfüllen: Data Engineering, Data Science, Analytik und Business Intelligence.
Spark ist eine sehr gute Wahl für Anwender, die Zeit und Geld in einen Hadoop-Cluster investiert haben, da es sich leicht in die bestehende Infrastruktur einfügen lässt und auf YARN, Mesos oder im Standalone-Modus laufen kann. Spark lässt sich auch mühelos mit AWS Elastic Mapreduce (EMR) hochfahren, wodurch es zu einer relativ kostengünstigen Option für einmalige oder geplante Batch-Jobs wird.
Ab der Version Spark 2.0 ist Spark ANSI SQL:2003-kompatibel. Dadurch unterstützt Spark SQL SQL-Operationen, die in anderen Dialekten nicht verfügbar sind.
Spark wird von einer Vielzahl von Entwicklern und Anbietern unterstützt. Infolgedessen hat Spark einen raschen und kontinuierlichen Entwicklungszyklus.
SparkSQL funktioniert besonders gut mit kleineren Analyseanfragen. Altscale konzentriert sich als Business-Intelligence-Anbieter auf Hadoop-Lösungen und hat in einem aktuellen Benchmark Impala, Hive auf Tez, Spark und Presto miteinander verglichen. Dabei schnitt Spark (zusammen mit Impala) für kleinere Datensätze besonders gut ab.
Spark kann auch besonders große Datensätze mit Milliarden von Zeilen äußerst gut bewältigen. Spark übertrifft typischerweise andere SQL Engines beim Zusammenfügen von Tabellen mit Milliarden von Zeilen. Spark hat im AltScale-Benchmark 2016 auch alle anderen SQL Engines bei Tests mit sehr großen Datensätzen übertroffen.
Spark lässt sich nahtlos mit anderen Tools aus dem Toolkit von Datenwissenschaftlern wie R (über SparkR) und Python (über PySpark) integrieren und wird mit einer Bibliothek für maschinelles Lernen (MLib) ausgeliefert. Dies macht Apache Spark zu einem Favoriten für Datenwissenschaftler, die an der Erforschung von auf Hadoop gespeicherten Daten interessiert sind.
Spark wird von den Anbietern Databricks und Amazon Web Services vertrieben.
Databricks berechnet die Kosten für Spark nutzungsabhängig, wobei eine kostenlose Testversion der erhältlichen Plattformpläne auf Anfrage verfügbar ist. Die unterschiedlichen Preismodelle von Databricks sind:
Sie können einen Amazon Elastic MapReduce (EMR) Cluster hochfahren, der eine Vielzahl von Konfigurationsoptionen mit variablen Preisen unterstützt. Da es sich bei Spark um eine In-Memory-Datenbank handelt, wird die Auswahl von speicheroptimierten Instanztypen empfohlen.
Die Kern-APIs von Spark können unstrukturierte, semistrukturierte und strukturierte Daten verarbeiten. Spark SQL arbeitet speziell mit den beiden letztgenannten, bei denen ein gewisses Schema vorhanden ist. Die native Datenstruktur von Spark ist das Resilient Distributed Dataset (RDD). RDDs sind im Endeffekt verteilte und fehlertolerante Datensammlungen. Dataframes sind die Lingua franca zwischen Spark und Spark SQL. Sie fügen den Daten eine Spaltenstruktur hinzu und sind analog zu den Datenrahmen in R und Python (Pandas).
Spark kann theoretisch auf Tausenden von Rechnern skaliert werden und ist so in der Lage ist, wirklich große Datenmengen im Petabyte-Bereich zu verarbeiten. Es kann auch Avro-, Text- und Spaltenformate aufnehmen und daher viele verschiedene Arten strukturierter Daten verarbeiten.
Sie können neue Daten mit JSON oder Parsern für abgegrenzte Textdateien direkt in Spark SQL einlesen. Sie können Daten von lokalen Dateisystemen, HDFS, S3, RDBMS und anderen einlesen. Databricks hat ein Redshift-to-Spark-Tool veröffentlicht, mit dem Sie Daten von Amazon Redshift über S3 zu Spark migrieren können, um diese auf beliebige Weise abzufragen.
Alternativ können Sie eine Pipeline einrichten, die zunächst Spark oder Spark-Streaming zur Verarbeitung unstrukturierter Daten verwendet, ein explizites Schema für die Daten definieren und in einen Datenrahmen konvertieren. Sie können dann die strukturierten Daten über eine Reihe von Treiberprogrammen, einschließlich der Spark-Shell, abfragen, indem Sie eine Anwendung über beeline oder JDBC einreichen.
Spark verfügt über viele Parameter und Konfigurationseinstellungen für die Anpassung der Leistung. Für Anfänger kann dies eine gewisse Herausforderung darstellen. Zwar läuft Spark selbstverständlich mit den Standardeinstellungen, jedoch wird eine optimale Leistung wahrscheinlich eine Anpassung erfordern.
Die meisten BI-Tools stellen die Verbindung über JDBC oder ODBC her und können daher keine Scala- oder Python- oder DataFrame-Operationen ausführen. Stattdessen geben sie SQL an den Hive-Metastore weiter. Dies reduziert die Flexibilität dessen, was Anwender von Spark und ihrem bevorzugten BI-Tool erwarten können. Anders gesagt müssen BI-Tools das Schema kennen, um mit den zugrunde liegenden Daten irgendetwas anfangen zu können.
Business Intelligence, Big-Data-Analyse oder eine 360°-Ansicht Ihrer Kunden.
Was auch immer Sie benötigen, Looker steht Ihnen zur Seite. Sprechen Sie einfach mit unseren Datenexperten.