Vorwort

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

Wir begrüßen dich zur zweiten Ausgabe von Learning Spark. Es ist fünf Jahre her, dass die erste Ausgabe im Jahr 2015 veröffentlicht wurde, ursprünglich verfasst von Holden Karau, Andy Konwinski, Patrick Wendell und Matei Zaharia. Diese neue Ausgabe wurde aktualisiert, um die Entwicklung von Apache Spark durch Spark 2.x und Spark 3.0 widerzuspiegeln, einschließlich des erweiterten Ökosystems an integrierten und externen Datenquellen, maschinellem Lernen und Streaming-Technologien, mit denen Spark eng verbunden ist.

Im Laufe der Jahre seit der ersten Version 1.x hat sich Spark zur de facto Big Data Unified Processing Engine entwickelt. Auf dem Weg dorthin hat Spark seinen Anwendungsbereich erweitert und unterstützt nun auch verschiedene analytische Workloads. Unser Ziel ist es, diese Entwicklung für die Leserinnen und Leser zu erfassen und aufzuzeigen, wie du Spark nicht nur nutzen kannst, sondern wie es in die neue Ära von Big Data und maschinellem Lernen passt. Daher haben wir jedes Kapitel so gestaltet, dass es schrittweise auf den Grundlagen der vorangegangenen Kapitel aufbaut, damit die Inhalte für die Zielgruppe geeignet sind.

Für wen dieses Buch ist

Die meisten Entwickler, die sich mit Big Data befassen, sind data engineers, data scientists oder machine learning engineers. Dieses Buch richtet sich an diese Fachleute, die Spark nutzen wollen, um ihre Anwendungen zu skalieren und große Datenmengen zu verarbeiten.

Dateningenieure werden insbesondere lernen, wie sie die strukturierten APIs von Spark nutzen, um komplexe Datenexplorationen und -analysen sowohl mit Batch- als auch mit Streaming-Daten durchzuführen, Spark SQL für interaktive Abfragen zu verwenden, die in Spark integrierten und externen Datenquellen zu nutzen, um Daten in verschiedenen Dateiformaten als Teil ihrer Extraktions-, Transformations- und Ladeaufgaben (ETL) zu lesen, zu verfeinern und zu schreiben und zuverlässige Data Lakes mit Spark und dem Open-Source-Tabellenformat Delta Lake aufzubauen.

Für Datenwissenschaftler und Machine-Learning-Ingenieure bietet die Bibliothek MLlib von Spark ( ) viele gängige Algorithmen zur Erstellung verteilter Machine-Learning-Modelle. Wir werden uns mit dem Aufbau von Pipelines mit MLlib, bewährten Methoden für verteiltes maschinelles Lernen, der Nutzung von Spark zur Skalierung von Single-Node-Modellen und der Verwaltung und Bereitstellung dieser Modelle mit der Open-Source-Bibliothek MLflow beschäftigen.

Das Buch konzentriert sich auf das Erlernen von Spark als Analyse-Engine für verschiedene Arbeitslasten, daher werden wir nicht alle Sprachen behandeln, die Spark unterstützt. Die meisten Beispiele in den Kapiteln sind in Scala, Python und SQL geschrieben. Wo es nötig war, haben wir auch ein wenig Java eingearbeitet. Wenn du Spark mit R lernen möchtest, empfehlen wir dir das Buch Mastering Spark with R von Javier Luraschi, Kevin Kuo und Edgar Ruiz (O'Reilly).

Da es sich bei Spark um eine verteilte Engine handelt, ist ein Verständnis der Spark-Anwendungskonzepte von entscheidender Bedeutung. Wir zeigen dir, wie deine Spark-Anwendung mit den verteilten Komponenten von Spark interagiert und wie die Ausführung in parallele Aufgaben auf einem Cluster zerlegt wird. Außerdem erfahren wir, welche Bereitstellungsmodi unterstützt werden und in welchen Umgebungen.

Es gibt zwar viele Themen, die wir behandeln wollen, aber es gibt auch einige, auf die wir uns nicht konzentrieren wollen. Dazu gehören die älteren RDD-APIs (Resilient Distributed Dataset) und GraphX, die Spark-API für Graphen und grafisch-parallele Berechnungen. Wir haben auch keine fortgeschrittenen Themen behandelt, z. B. wie du den Catalyst Optimizer von Spark erweitern kannst, um deine eigenen Operationen zu implementieren, wie du deinen eigenen Katalog implementierst oder wie du deine eigenen DataSource V2 Datensenken und -quellen schreibst. Diese Themen sind zwar Teil von Spark, gehen aber über den Rahmen deines ersten Buchs zum Erlernen von Spark hinaus.

Stattdessen konzentrieren wir uns in diesem Buch auf die strukturierten APIs von Spark und zeigen dir, wie du mit Spark strukturierte Daten in großem Umfang verarbeiten kannst, um deine Data Engineering- oder Data Science-Aufgaben zu erledigen.

Wie das Buch gegliedert ist

Wir haben das Buch so aufgebaut, dass du von Kapitel zu Kapitel durch die Einführung von Konzepten, die Demonstration dieser Konzepte anhand von Codebeispielen und die Bereitstellung vollständiger Codebeispiele oder Notebooks im GitHub-Repository des Buches geführt wirst.

Kapitel 1, "Einführung in Apache Spark: Eine einheitliche Analyse-Engine"

Führt dich in die Entwicklung von Big Data ein und gibt dir einen Überblick über Apache Spark und seine Anwendung auf Big Data.

Kapitel 2, "Herunterladen von Apache Spark und erste Schritte"

Führt dich durch das Herunterladen und Einrichten von Apache Spark auf deinem lokalen Rechner.

Kapitel 3, "Die strukturierten APIs von Apache Spark" bis Kapitel 6, "Spark SQL und Datensätze"

In diesen Kapiteln geht es um die Verwendung der strukturierten APIs DataFrame und Dataset, um Daten aus integrierten und externen Datenquellen aufzunehmen, integrierte und benutzerdefinierte Funktionen anzuwenden und Spark SQL zu nutzen. Diese Kapitel bilden die Grundlage für spätere Kapitel, in denen alle aktuellen Änderungen von Spark 3.0 berücksichtigt werden.

Kapitel 7, "Optimieren und Abstimmen von Spark-Anwendungen"

Hier findest du bewährte Methoden für das Tuning, die Optimierung, das Debugging und die Inspektion deiner Spark-Anwendungen über die Spark-Benutzeroberfläche sowie Details zu den Konfigurationen, die du zur Leistungssteigerung anpassen kannst.

Kapitel 8, "Strukturiertes Streaming"

Führt dich durch die Entwicklung der Spark Streaming Engine und des Structured Streaming Programmiermodells. Er untersucht den Aufbau einer typischen Streaming-Abfrage und erörtert die verschiedenen Möglichkeiten, Streaming-Daten umzuwandeln - zustandsbehaftete Aggregationen, Stream-Joins und beliebige zustandsbehaftete Aggregationen - und bietet gleichzeitig eine Anleitung, wie man performante Streaming-Abfragen entwickelt.

Kapitel 9, "Aufbau zuverlässiger Data Lakes mit Apache Spark"

Untersucht drei Open-Source-Lösungen zur Speicherung von Tabellenformaten, die Teil des Spark-Ökosystems sind und Apache Spark nutzen, um zuverlässige Data Lakes mit Transaktionsgarantien aufzubauen. Aufgrund der engen Integration von Delta Lake mit Spark sowohl für Batch- als auch für Streaming-Workloads konzentrieren wir uns auf diese Lösung und untersuchen, wie sie ein neues Paradigma im Datenmanagement, das Lakehouse, ermöglicht.

Kapitel 10, "Maschinelles Lernen mit MLlib"

MLlib, die verteilte Bibliothek für maschinelles Lernen für Spark, wird vorgestellt. Anhand eines durchgängigen Beispiels wird gezeigt, wie eine Pipeline für maschinelles Lernen aufgebaut wird, einschließlich Themen wie Feature-Engineering, Abstimmung von Hyperparametern, Bewertungsmetriken und Speichern und Laden von Modellen.

Kapitel 11, "Verwalten, Bereitstellen und Skalieren von Machine Learning Pipelines mit Apache Spark"

Erläutert, wie du deine MLlib-Modelle mit MLflow verfolgst und verwaltest, vergleicht und kontrastiert verschiedene Modellbereitstellungsoptionen und untersucht, wie du Spark für Nicht-MLlib-Modelle für verteilte Modellinferenz, Feature Engineering und/oder Hyperparameter-Tuning nutzen kannst.

Kapitel 12, "Epilog: Apache Spark 3.0"

Der Epilog hebt bemerkenswerte Funktionen und Änderungen in Spark 3.0 hervor. Die gesamte Palette der Verbesserungen und Funktionen ist zu umfangreich, um in einem einzigen Kapitel Platz zu finden. Wir heben die wichtigsten Änderungen hervor, die du kennen solltest, und empfehlen dir, die Versionshinweise zu lesen, wenn Spark 3.0 offiziell veröffentlicht wird.

In diesen Kapiteln haben wir Spark 3.0-Funktionen eingebaut oder vermerkt, wo es nötig war, und alle Codebeispiele und Notebooks mit Spark 3.0.0-preview2 getestet.

Wie man die Codebeispiele verwendet

Die Codebeispiele im Buch reichen von kurzen Schnipseln bis hin zu kompletten Spark-Anwendungen und End-to-End-Notizbüchern, in Scala, Python, SQL und, wo nötig, Java.

Während einige kurze Codeschnipsel in einem Kapitel in sich abgeschlossen sind und kopiert und eingefügt werden können, um in einer Spark-Shell (pyspark oder spark-shell) ausgeführt zu werden, sind andere Fragmente von eigenständigen Spark-Anwendungen oder End-to-End-Notebooks. Um eigenständige Spark-Anwendungen in Scala, Python oder Java auszuführen, lies die Anweisungen in den README-Dateien der jeweiligen Kapitel im GitHub-Repository dieses Buches.

Um die Notebooks nutzen zu können, musst du dich für ein kostenloses Konto der Databricks Community Edition registrieren. Wie du die Notebooks importierst und einen Cluster mit Spark 3.0 erstellst, wird in der README beschrieben.

Verwendete Software und Konfiguration

Der Großteil des Codes in diesem Buch und den dazugehörigen Notizbüchern wurde mit Apache Spark 3.0.0-preview2 geschrieben und getestet, das uns zum Zeitpunkt der Erstellung der letzten Kapitel zur Verfügung stand.

Zum Zeitpunkt der Veröffentlichung dieses Buches wird Apache Spark 3.0 veröffentlicht sein und der Community zur allgemeinen Nutzung zur Verfügung stehen. Wir empfehlen, dass du die offizielle Version mit den folgenden Konfigurationen für dein Betriebssystem herunterlädst und verwendest:

  • Apache Spark 3.0 (vordefiniert für Apache Hadoop 2.7)

  • Java Development Kit (JDK) 1.8.0

Wenn du nur Python verwenden willst, kannst du einfach pip install pyspark ausführen.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.
Constant width italic
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Code-Beispiele verwenden

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, schicke bitte eine E-Mail an

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Der Verkauf oder die Verbreitung von Beispielen aus O'Reilly-Büchern erfordert jedoch eine Genehmigung. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Genehmigung erforderlich .

Wir freuen uns über eine Namensnennung, verlangen sie aber in der Regel nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Zum Beispiel: "Learning Spark, 2nd Edition, von Jules S. Damji, Brooke Wenig, Tathagata Das und Denny Lee. Copyright 2020 Databricks, Inc., 978-1-492-05004-9."

Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Besuche unsere Webseite zu diesem Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten, unter https://oreil.ly/LearningSpark2.

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter http://oreilly.com.

Finde uns auf Facebook: http://facebook.com/oreilly

Folge uns auf Twitter: http://twitter.com/oreillymedia

Schau uns auf YouTube: http://www.youtube.com/oreillymedia

Danksagungen

Dieses Projekt war eine echte Teamleistung, an der viele Menschen beteiligt waren. Ohne ihre Unterstützung und ihr Feedback hätten wir dieses Buch nicht fertigstellen können, vor allem nicht in der heutigen Zeit, in der COVID-19 noch nie da war.

Zuallererst möchten wir uns bei unserem Arbeitgeber Databricks dafür bedanken, dass er uns unterstützt und uns im Rahmen unserer Aufträge Zeit für die Fertigstellung dieses Buches zur Verfügung gestellt hat. Insbesondere möchten wir Matei Zaharia, Reynold Xin, Ali Ghodsi, Ryan Boyd und Rick Schultz dafür danken, dass sie uns ermutigt haben, die zweite Auflage zu schreiben.

Zweitens möchten wir uns bei unseren technischen Gutachtern bedanken: Adam Breindel, Amir Issaei, Jacek Laskowski, Sean Owen und Vishwanath Subramanian. Ihr sorgfältiges und konstruktives Feedback, das durch ihre technische Expertise in der Community und ihre Sichtweise der Industrie geprägt ist, hat dieses Buch zu dem gemacht, was es ist: eine wertvolle Ressource, um Spark zu lernen.

Neben den offiziellen Buchrezensenten haben wir unschätzbares Feedback von anderen erhalten, die sich mit bestimmten Themen und Abschnitten der Kapitel auskennen. Vielen Dank an: Conor Murphy, Hyukjin Kwon, Maryann Xue, Niall Turbitt, Wenchen Fan, Xiao Li, und Yuanjian Li.

Schließlich möchten wir uns bei unseren Kollegen bei Databricks (für ihre Toleranz, wenn wir Projekttermine verpasst oder vernachlässigt haben), bei unseren Familien und Angehörigen (für ihre Geduld und ihr Mitgefühl, wenn wir am frühen Morgen oder spät in der Nacht an Wochentagen und Wochenenden geschrieben haben) und bei der gesamten Open-Source-Spark-Community bedanken. Ohne ihre kontinuierlichen Beiträge wäre Spark nicht da, wo es heute ist - und wir Autoren hätten nicht viel zu schreiben gehabt.

Danke euch allen!

Get Spark lernen, 2. Auflage 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.