Kapitel 1. Was ist Apache Spark?

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Apache Spark ist eine einheitliche Computing-Engine und eine Reihe von Bibliotheken für die parallele Datenverarbeitung auf Computerclustern. Derzeit ist Spark die am aktivsten entwickelte Open-Source-Engine für diese Aufgabe und damit ein Standardwerkzeug für jeden Entwickler oder Datenwissenschaftler, der sich für Big Data interessiert. Spark unterstützt mehrere weit verbreitete Programmiersprachen (Python, Java, Scala und R), enthält Bibliotheken für verschiedene Aufgaben von SQL bis hin zu Streaming und maschinellem Lernen und kann von einem Laptop bis hin zu einem Cluster mit Tausenden von Servern betrieben werden. Das macht es zu einem einfachen System für den Einstieg und den Ausbau zu einer Big Data-Verarbeitung oder einem unglaublich großen Maßstab.

Abbildung 1-1 veranschaulicht alle Komponenten und Bibliotheken, die Spark den Endnutzern bietet.

image
Abbildung 1-1. Der Werkzeugkasten von Spark

Du wirst feststellen, dass die Kategorien in etwa den verschiedenen Teilen dieses Buches entsprechen. Das ist auch nicht weiter verwunderlich, denn unser Ziel ist es, dich über alle Aspekte von Spark zu informieren, und Spark besteht aus einer Reihe von verschiedenen Komponenten.

Da du dieses Buch liest, weißt du vielleicht schon ein wenig über Apache Spark und seine Möglichkeiten. Trotzdem wollen wir in diesem Kapitel kurz auf die übergeordnete Philosophie von Spark, den Kontext, in dem es entwickelt wurde (warum begeistert sich plötzlich jeder für parallele Datenverarbeitung?) und seine Geschichte eingehen. Außerdem werden wir die ersten Schritte zum Betrieb von Spark erläutern.

Die Philosophie von Apache Spark

Unter findest du eine Beschreibung von Apache Spark, einer einheitlichen Rechenmaschine und einer Reihe von Bibliotheken für Big Data, die wir in ihre wichtigsten Bestandteile zerlegen:

Unified

Das wichtigste Ziel von Spark ist es, eine einheitliche Plattform für die Entwicklung von Big-Data-Anwendungen zu bieten. Was meinen wir mit einheitlich? Spark wurde entwickelt, um eine breite Palette von Datenanalyseaufgaben zu unterstützen, die vom einfachen Laden von Daten und SQL-Abfragen bis hin zu maschinellem Lernen und Streaming-Berechnungen reichen, und zwar über dieselbe Rechen-Engine und mit einem einheitlichen Satz von APIs. Die wichtigste Erkenntnis hinter diesem Ziel ist, dass reale Datenanalyseaufgaben - ob interaktive Analysen in einem Tool wie einem Jupyter-Notebook oder traditionelle Softwareentwicklung für Produktionsanwendungen - in der Regel viele verschiedene Verarbeitungstypen und Bibliotheken kombinieren.

Die einheitliche Natur von Spark macht es einfacher und effizienter, diese Aufgaben zu schreiben. Erstens bietet Spark konsistente, zusammensetzbare APIs, mit denen du eine Anwendung aus kleineren Teilen oder aus bestehenden Bibliotheken aufbauen kannst. Außerdem kannst du ganz einfach deine eigenen Analysebibliotheken darauf aufbauen. Zusammensetzbare APIs sind jedoch nicht genug: Die APIs von Spark sind auch so konzipiert, dass sie eine hohe Leistung ermöglichen, indem sie die verschiedenen Bibliotheken und Funktionen optimieren, die in einem Benutzerprogramm zusammengesetzt werden. Wenn du zum Beispiel mit einer SQL-Abfrage Daten lädst und dann mit der ML-Bibliothek von Spark ein maschinelles Lernmodell darüber auswertest, kann die Engine diese Schritte zu einem einzigen Scan über die Daten kombinieren. Die Kombination aus allgemeinen APIs und leistungsstarker Ausführung, egal wie du sie kombinierst, macht Spark zu einer leistungsstarken Plattform für interaktive und produktive Anwendungen.

Spark konzentriert sich auf die Definition einer einheitlichen Plattform und folgt damit der gleichen Idee, die auch in anderen Softwarebereichen für einheitliche Plattformen sorgt. So profitieren Datenwissenschaftler bei der Modellierung von einem einheitlichen Satz an Bibliotheken (z. B. Python oder R) und Webentwickler von einheitlichen Frameworks wie Node.js oder Django. Vor Spark gab es keine Open-Source-Systeme, die eine solche einheitliche Engine für die parallele Datenverarbeitung bereitstellten, so dass die Nutzer/innen ihre Anwendungen aus verschiedenen APIs und Systemen zusammenstellen mussten. So wurde Spark schnell zum Standard für diese Art der Entwicklung. Im Laufe der Zeit hat Spark seine integrierten APIs immer weiter ausgebaut, um mehr Arbeitslasten abzudecken. Gleichzeitig haben die Entwickler des Projekts das Thema einer einheitlichen Engine weiter verfeinert. Ein Schwerpunkt dieses Buches sind die "strukturierten APIs" (Datenrahmen, Datensätze und SQL), die in Spark 2.0 fertiggestellt wurden, um eine leistungsfähigere Optimierung unter Benutzeranwendungen zu ermöglichen.

Rechenmaschine

Unter strebt Spark zwar eine Vereinheitlichung an, beschränkt sich aber gleichzeitig sorgfältig auf eine Rechenmaschine. Damit meinen wir, dass Spark das Laden von Daten aus Speichersystemen und die Durchführung von Berechnungen übernimmt, nicht aber die dauerhafte Speicherung als Endpunkt selbst. Du kannst Spark mit einer Vielzahl von persistenten Speichersystemen verwenden, darunter Cloud-Speichersysteme wie Azure Storage und Amazon S3, verteilte Dateisysteme wie Apache Hadoop, Key-Value-Stores wie Apache Cassandra und Nachrichtenbusse wie Apache Kafka. Spark speichert jedoch weder Daten langfristig, noch bevorzugt es die eine oder andere Variante. Der Hauptgrund dafür ist, dass die meisten Daten bereits in einer Mischung aus verschiedenen Speichersystemen gespeichert sind. Das Verschieben von Daten ist teuer, daher konzentriert sich Spark darauf, Berechnungen mit den Daten durchzuführen, unabhängig davon, wo sie gespeichert sind. In den benutzerseitigen APIs bemüht sich Spark darum, dass diese Speichersysteme weitgehend ähnlich aussehen, damit sich die Anwendungen keine Gedanken darüber machen müssen, wo ihre Daten liegen.

Der Fokus von Spark auf Berechnungen unterscheidet es von früheren Big-Data-Softwareplattformen wie Apache Hadoop. Hadoop umfasste sowohl ein Speichersystem (das Dateisystem Hadoop, das für die kostengünstige Speicherung auf Clustern von handelsüblichen Servern entwickelt wurde) als auch ein Rechensystem (MapReduce), die eng miteinander verbunden waren. Diese Wahl macht es jedoch schwierig, eines der Systeme ohne das andere zu betreiben. Noch wichtiger ist, dass diese Wahl es auch zu einer Herausforderung macht, Anwendungen zu schreiben, die auf Daten zugreifen, die irgendwo anders gespeichert sind. Obwohl Spark gut auf der Hadoop-Speicherung läuft, wird es heute auch in Umgebungen eingesetzt, in denen die Hadoop-Architektur keinen Sinn macht, wie z. B. in der öffentlichen Cloud (wo die Speicherung separat von der Datenverarbeitung erworben werden kann) oder bei Streaming-Anwendungen.

Bibliotheken

Die letzte Komponente von Spark ( ) sind die Bibliotheken, die auf dem Design als einheitliche Engine aufbauen und eine einheitliche API für gängige Datenanalyseaufgaben bieten. Spark unterstützt sowohl die Standardbibliotheken, die mit der Engine geliefert werden, als auch eine Vielzahl externer Bibliotheken, die von den Open-Source-Communities als Pakete von Drittanbietern veröffentlicht werden. Heute machen die Standardbibliotheken von Spark den größten Teil des Open-Source-Projekts aus: Die Spark-Kern-Engine selbst hat sich seit der ersten Veröffentlichung kaum verändert, aber die Bibliotheken sind gewachsen und bieten immer mehr Funktionen. Spark umfasst Bibliotheken für SQL und strukturierte Daten (Spark SQL), maschinelles Lernen (MLlib), Stream Processing (Spark Streaming und das neuere Structured Streaming) und Graph Analytics (GraphX). Neben diesen Bibliotheken gibt es Hunderte von externen Open-Source-Bibliotheken, die von Konnektoren für verschiedene Speichersysteme bis hin zu Algorithmen für maschinelles Lernen reichen. Ein Verzeichnis der externen Bibliotheken findet sich unter auf spark-packages.org.

Der Kontext: Das Big Data Problem

Warum brauchen wir überhaupt eine neue Engine und ein neues Programmiermodell für die Datenanalyse? Wie bei vielen Trends in der Computerbranche ist dies auf Veränderungen der wirtschaftlichen Faktoren zurückzuführen, die Computeranwendungen und Hardware zugrunde liegen.

Die meiste Zeit ihrer Geschichte wurden Computer durch die Erhöhung der Prozessorgeschwindigkeit jedes Jahr schneller: Die neuen Prozessoren konnten jedes Jahr mehr Anweisungen pro Sekunde ausführen als die des Vorjahres. Infolgedessen wurden auch die Anwendungen automatisch jedes Jahr schneller, ohne dass ihr Code geändert werden musste. Dieser Trend führte dazu, dass sich im Laufe der Zeit ein großes und etabliertes Ökosystem von Anwendungen bildete, von denen die meisten nur für einen einzigen Prozessor ausgelegt waren. Diese Anwendungen nutzten den Trend zu höheren Prozessorgeschwindigkeiten, um im Laufe der Zeit größere Berechnungen und größere Datenmengen zu bewältigen.

Leider wurde dieser Trend bei der Hardware um 2005 gestoppt: Aufgrund von Einschränkungen bei der Wärmeabfuhr hörten die Hardwareentwickler auf, einzelne Prozessoren schneller zu machen, und gingen dazu über, mehr parallele CPU-Kerne hinzuzufügen, die alle mit der gleichen Geschwindigkeit laufen. Diese Veränderung bedeutete, dass Anwendungen plötzlich geändert werden mussten, um die Parallelität zu erhöhen, damit sie schneller laufen konnten.

Hinzu kommt, dass sich die Technologien zur Datenspeicherung und -erfassung im Jahr 2005 nicht merklich verlangsamt haben, während die Prozessoren schneller wurden. Die Kosten für die Speicherung von 1 TB Daten sinken weiterhin alle 14 Monate um etwa das Doppelte, was bedeutet, dass es für Unternehmen jeder Größe sehr kostengünstig ist, große Datenmengen zu speichern. Außerdem sinken die Kosten für viele Technologien zur Datenerfassung (Sensoren, Kameras, öffentliche Datensätze usw.) weiter und die Auflösung wird immer besser. Die Kameratechnologie beispielsweise verbessert ihre Auflösung und senkt die Kosten pro Pixel jedes Jahr, so dass eine 12-Megapixel-Webcam heute nur noch 3 bis 4 Dollar kostet. Dadurch ist es möglich, eine Vielzahl von visuellen Daten kostengünstig zu sammeln, sei es von Menschen, die Videos filmen, oder von automatischen Sensoren in der Industrie. Außerdem sind Kameras selbst die wichtigsten Sensoren in anderen Datenerfassungsgeräten wie Teleskopen und sogar Gensequenziermaschinen, was die Kosten für diese Technologien ebenfalls senkt.

Das Ergebnis ist eine Welt, in der das Sammeln von Daten extrem kostengünstig ist - viele Unternehmen halten es heute sogar für fahrlässig, geschäftsrelevante Daten nicht zu protokollieren -, deren Verarbeitung aber große, parallele Berechnungen erfordert, die oft von mehreren Rechnern durchgeführt werden. Außerdem lässt sich die in den letzten 50 Jahren entwickelte Software in dieser neuen Welt nicht mehr automatisch skalieren, ebenso wenig wie die traditionellen Programmiermodelle für Datenverarbeitungsanwendungen, so dass neue Programmiermodelle erforderlich sind. Genau für diese Welt wurde Apache Spark entwickelt.

Geschichte von Spark

Apache Spark begann 2009 an der UC Berkeley als Spark-Forschungsprojekt, das im folgenden Jahr in einem Papier mit dem Titel "Spark" veröffentlicht wurde : Cluster Computing with Working Sets" von Matei Zaharia, Mosharaf Chowdhury, Michael Franklin, Scott Shenker und Ion Stoica vom UC Berkeley AMPlab veröffentlicht wurde. Zu dieser Zeit war Hadoop MapReduce die vorherrschende parallele Programmiermaschine für Cluster und das erste Open-Source-System, das die parallele Verarbeitung von Daten auf Clustern mit Tausenden von Knoten ermöglichte. Das AMPlab hatte mit mehreren frühen MapReduce-Nutzern zusammengearbeitet, um die Vor- und Nachteile dieses neuen Programmiermodells zu verstehen, und war daher in der Lage, eine Liste von Problemen für verschiedene Anwendungsfälle zusammenzustellen und mit der Entwicklung allgemeinerer Computerplattformen zu beginnen. Darüber hinaus hatte Zaharia auch mit Hadoop-Nutzern an der UC Berkeley zusammengearbeitet, um deren Anforderungen an die Plattform zu verstehen - insbesondere mit Teams, die in großem Maßstab maschinelles Lernen mit iterativen Algorithmen betreiben, die die Daten mehrfach durchlaufen müssen.

Bei all diesen Gesprächen wurden zwei Dinge deutlich. Erstens birgt das Cluster-Computing ein enormes Potenzial: In jeder Organisation, die MapReduce einsetzt, konnten mit den vorhandenen Daten ganz neue Anwendungen erstellt werden, und viele neue Gruppen begannen, das System nach den ersten Anwendungsfällen zu nutzen. Zweitens machte es die MapReduce-Engine jedoch sowohl schwierig als auch ineffizient, große Anwendungen zu erstellen. Ein typischer Algorithmus für maschinelles Lernen musste zum Beispiel 10 oder 20 Durchläufe über die Daten machen, und in MapReduce musste jeder Durchlauf als separater MapReduce-Auftrag geschrieben werden, der separat auf dem Cluster gestartet werden und die Daten von Grund auf laden musste.

Um dieses Problem zu lösen, entwickelte das Spark-Team zunächst eine API, die auf funktionaler Programmierung basiert und mit der sich mehrstufige Anwendungen kurz und bündig beschreiben lassen. Anschließend implementierte das Team diese API über eine neue Engine, die eine effiziente gemeinsame Nutzung von Daten im Arbeitsspeicher über mehrere Berechnungsschritte hinweg ermöglicht. Das Team begann, dieses System sowohl mit Berkeley als auch mit externen Nutzern zu testen.

Die erste Version von Spark ( ) unterstützte nur Batch-Anwendungen, aber schon bald wurde ein weiterer überzeugender Anwendungsfall deutlich: interaktive Datenwissenschaft und Ad-hoc-Abfragen. Durch einfaches Einbinden des Scala-Interpreters in Spark konnte das Projekt ein hochgradig brauchbares interaktives System für die Ausführung von Abfragen auf Hunderten von Rechnern bereitstellen. Das AMPlab baute schnell auf dieser Idee auf und entwickelte Shark, eine Engine, die SQL-Abfragen über Spark ausführen kann und die interaktive Nutzung durch Analysten und Datenwissenschaftler ermöglicht. Shark wurde erstmals 2011 veröffentlicht.

Nach diesen ersten Veröffentlichungen wurde schnell klar, dass die leistungsstärksten Ergänzungen zu Spark neue Bibliotheken sein würden, und so begann das Projekt, den heutigen Ansatz der "Standardbibliotheken" zu verfolgen. Insbesondere starteten verschiedene AMPlab-Gruppen MLlib, Spark Streaming und GraphX. Sie sorgten auch dafür, dass diese APIs in hohem Maße interoperabel sind, damit zum ersten Mal durchgängige Big-Data-Anwendungen in derselben Engine geschrieben werden können.

Im Jahr 2013 war das Projekt mit mehr als 100 Mitwirkenden aus mehr als 30 Organisationen außerhalb der UC Berkeley zu einem weit verbreiteten Projekt geworden. Das AMPlab brachte Spark in die Apache Software Foundation ein, um dem Projekt eine langfristige, herstellerunabhängige Heimat zu geben. Das frühe AMPlab-Team gründete auch ein Unternehmen, Databricks, um das Projekt zu festigen, und schloss sich damit der Gemeinschaft anderer Unternehmen und Organisationen an, die zu Spark beitragen. Seitdem hat die Apache Spark-Gemeinschaft Spark 1.0 im Jahr 2014 und Spark 2.0 im Jahr 2016 veröffentlicht und bringt auch weiterhin regelmäßig neue Funktionen in das Projekt ein.

Schließlich wurde Sparks Kernidee der kompatiblen APIs im Laufe der Zeit verfeinert. In den frühen Versionen von Spark (vor 1.0) wurde diese API hauptsächlich durch funktionale Operationendefiniert - paralleleOperationen wie Maps und Reductions über Sammlungen von Java-Objekten. Mit der Version 1.0 kam Spark SQL hinzu, eine neue API für die Arbeit mit strukturierten Daten - Tabellenmit einem festen Datenformat, das nicht an die In-Memory-Darstellung von Java gebunden ist. Spark SQL ermöglichte leistungsstarke neue Optimierungen über Bibliotheken und APIs hinweg, indem es sowohl das Datenformat als auch den darauf ausgeführten Benutzercode detaillierter verstand. Im Laufe der Zeit kamen zahlreiche neue APIs hinzu, die auf dieser leistungsfähigen, strukturierten Grundlage aufbauen, darunter DataFrames, Pipelines für maschinelles Lernen und Structured Streaming, eine hochentwickelte, automatisch optimierte Streaming-API. In diesem Buch werden wir viel Zeit darauf verwenden, diese APIs der nächsten Generation zu erklären, von denen die meisten als produktionsreif gekennzeichnet sind.

Die Gegenwart und Zukunft von Spark

Spark gibt es schon seit einigen Jahren, aber die Popularität und die Anwendungsfälle nehmen weiter zu. Viele neue Projekte innerhalb des Spark-Ökosystems verschieben die Grenzen dessen, was mit dem System möglich ist. Zum Beispiel wurde 2016 eine neue High-Level-Streaming-Engine, Structured Streaming, eingeführt. Diese Technologie ist ein wichtiger Bestandteil von Unternehmen, die große Datenmengen verarbeiten, von Technologieunternehmen wie Uber und Netflix, die die Streaming- und Machine-Learning-Tools von Spark nutzen, bis hin zu Institutionen wie der NASA, dem CERN und dem Broad Institute des MIT und Harvard, die Spark zur wissenschaftlichen Datenanalyse einsetzen.

Spark wird auf absehbare Zeit ein Eckpfeiler für Unternehmen sein, die Big-Data-Analysen durchführen, vor allem, weil sich das Projekt immer noch schnell entwickelt. Jeder Datenwissenschaftler oder Ingenieur, der Big-Data-Probleme lösen muss, braucht wahrscheinlich ein Exemplar von Spark auf seinem Rechner - und hoffentlich auch ein Exemplar dieses Buches in seinem Bücherregal!

Laufender Funke

Dieses Buch enthält eine Fülle von Spark-bezogenem Code, und es ist wichtig, dass du darauf vorbereitet bist, ihn beim Lernen auszuführen. In den meisten Fällen wirst du den Code interaktiv ausführen wollen, damit du mit ihm experimentieren kannst. Bevor wir mit der Arbeit an den Code-Teilen des Buches beginnen, wollen wir einige deiner Möglichkeiten durchgehen.

Du kannst Spark von Python, Java, Scala, R oder SQL aus nutzen. Spark selbst ist in Scala geschrieben und läuft auf der Java Virtual Machine (JVM). Um Spark auf deinem Laptop oder in einem Cluster auszuführen, brauchst du also nur eine Java-Installation. Wenn du die Python-API nutzen willst, brauchst du außerdem einen Python-Interpreter (Version 2.7 oder höher). Wenn du R verwenden möchtest, brauchst du eine Version von R auf deinem Rechner.

Es gibt zwei Möglichkeiten, die wir für den Einstieg in Spark empfehlen: Herunterladen und Installieren von Apache Spark auf deinem Laptop oder Ausführen einer webbasierten Version in der Databricks Community Edition, einer kostenlosen Cloud-Umgebung zum Erlernen von Spark, die den Code in diesem Buch enthält. Im Folgenden erklären wir diese beiden Möglichkeiten.

Lokales Herunterladen von Spark

Wenn du herunterlädst und Spark lokal ausführen möchtest, musst du zunächst sicherstellen, dass du Java auf deinem Rechner installiert hast (verfügbar unter java), sowie eine Python-Version, wenn du Python verwenden möchtest. Als Nächstes besuchst du die offizielle Download-Seite des Projekts, wählst den Pakettyp "Pre-built for Hadoop 2.7 and later" und klickst auf "Direct Download". Dadurch wird eine komprimierte TAR-Datei (Tarball) heruntergeladen, die du dann entpacken musst. Der Großteil dieses Buches wurde mit Spark 2.2 geschrieben, daher ist der Download der Version 2.2 oder höher ein guter Ausgangspunkt.

Herunterladen von Spark für einen Hadoop-Cluster

Spark kann lokal ohne ein verteiltes Speichersystem, wie z.B. Apache Hadoop, ausgeführt werden. Wenn du jedoch die Spark-Version auf deinem Laptop mit einem Hadoop-Cluster verbinden möchtest, musst du sicherstellen, dass du die richtige Spark-Version für diese Hadoop-Version herunterlädst. Diese kannst du auf http://spark.apache.org/downloads.html auswählen, indem du einen anderen Pakettyp auswählst. Wie Spark auf Clustern und im Hadoop-Dateisystem läuft, besprechen wir in späteren Kapiteln, aber an dieser Stelle empfehlen wir, Spark zunächst nur auf deinem Laptop laufen zu lassen.

Hinweis

In Spark 2.2 haben die Entwickler auch die Möglichkeit hinzugefügt, Spark für Python über pip install pyspark zu installieren. Diese Funktion kam heraus, als dieses Buch geschrieben wurde, daher konnten wir nicht alle relevanten Anleitungen einbeziehen.

Spark aus dem Quellcode bauen

Wir werden das in diesem Buch nicht behandeln, aber du kannst Spark auch aus dem Quellcode bauen und konfigurieren. Du kannst auf der Apache-Downloadseite ein Quellpaket auswählen, um nur den Quellcode zu erhalten, und dann den Anweisungen in der README-Datei folgen, um Spark zu bauen.

Nachdem du Spark heruntergeladen hast, musst du eine Eingabeaufforderung öffnen und das Paket entpacken. In unserem Fall installieren wir Spark 2.2. Das folgende Codeschnipsel kannst du auf jeder Unix-ähnlichen Kommandozeile ausführen, um die Datei, die du von Spark heruntergeladen hast, zu entpacken und in das Verzeichnis zu verschieben:

cd ~/Downloads
tar -xf spark-2.2.0-bin-hadoop2.7.tgz
cd spark-2.2.0-bin-hadoop2.7.tgz

Beachte, dass Spark eine große Anzahl von Verzeichnissen und Dateien innerhalb des Projekts hat. Lass dich nicht einschüchtern! Die meisten dieser Verzeichnisse sind nur relevant, wenn du den Quellcode liest. Im nächsten Abschnitt geht es um die wichtigsten Verzeichnisse - diejenigen, mit denen wir die verschiedenen Spark-Konsolen zur interaktiven Nutzung starten können.

Einführung der interaktiven Spark-Konsolen

Du kannst eine interaktive Shell in Spark für mehrere verschiedene Programmiersprachen starten. Der größte Teil dieses Buches ist mit Blick auf Python, Scala und SQL geschrieben; daher sind dies unsere empfohlenen Ausgangspunkte.

Starten der Python-Konsole

Du musst Python 2 oder 3 installieren, um die Python-Konsole zu starten. Führe im Home-Verzeichnis von Spark den folgenden Code aus:

./bin/pyspark

Nachdem du das getan hast, gibst du "spark" ein und drückst die Eingabetaste. Du siehst das SparkSession-Objekt ausgedruckt, das wir in Kapitel 2 behandeln.

Starten der Scala-Konsole

Um die Scala-Konsole zu starten, musst du den folgenden Befehl ausführen:

./bin/spark-shell

Nachdem du das getan hast, gibst du "spark" ein und drückst die Eingabetaste. Wie in Python siehst du nun das SparkSession-Objekt, das wir in Kapitel 2 behandeln.

Starten der SQL-Konsole

In den Teilen dieses Buches wird ein großer Teil von Spark SQL behandelt. Für diese solltest du die SQL-Konsole starten. Wir werden auf einige der wichtigeren Details zurückkommen, nachdem wir diese Themen im Buch behandelt haben.

./bin/spark-sql

Spark in der Cloud ausführen

Wenn du ein einfaches, interaktives Notebook zum Erlernen von Spark haben möchtest, solltest du die Databricks Community Edition nutzen. Databricks ist, wie bereits erwähnt, ein Unternehmen, das von dem Berkeley-Team gegründet wurde, das Spark ins Leben gerufen hat, und bietet eine kostenlose Community Edition seines Cloud-Dienstes als Lernumgebung an. Die Databricks Community Edition enthält eine Kopie aller Daten und Codebeispiele für dieses Buch, so dass du sie schnell ausführen kannst. Um die Databricks Community Edition zu nutzen, befolge die Anweisungen unter https://github.com/databricks/Spark-The-Definitive-Guide. Du kannst Scala, Python, SQL oder R über eine webbrowserbasierte Schnittstelle verwenden, um die Ergebnisse auszuführen und zu visualisieren.

In diesem Buch verwendete Daten

In diesem Buch werden wir eine Reihe von Datenquellen für unsere Beispiele verwenden. Wenn du den Code lokal ausführen möchtest, kannst du ihn aus dem offiziellen Code-Repository in diesem Buch herunterladen, wie unter https://github.com/databricks/Spark-The-Definitive-Guide beschrieben . Kurz gesagt: Du lädst die Daten herunter, legst sie in einem Ordner ab und führst dann die Codeschnipsel in diesem Buch aus!

Get Spark: Der endgültige Leitfaden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.