Vorwort

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

Spark hat sich zum De-facto-Standard für die Datenanalyse im großen Maßstab entwickelt. Ich benutze und unterrichte Spark seit seiner Einführung vor neun Jahren und habe enorme Verbesserungen bei Extrahier-, Transformier- und Ladeprozessen (ETL), verteilter Algorithmenentwicklung und groß angelegter Datenanalyse erlebt. Ich habe mit Spark in Java angefangen, aber ich habe festgestellt, dass der Code zwar ziemlich stabil ist, man aber lange Codezeilen schreiben muss, die unleserlich werden können. Für dieses Buch habe ich mich entschieden, PySpark (eine Python-API für Spark) zu verwenden, weil es einfacher ist, die Leistungsfähigkeit von Spark in Python auszudrücken: Der Code ist kurz, lesbar und wartbar. PySpark ist mächtig, aber einfach zu bedienen, und du kannst jeden ETL- oder verteilten Algorithmus mit einer einfachen Reihe von Transformationen und Aktionen darin ausdrücken.

Warum ich dieses Buch geschrieben habe

Dies ist ein einführendes Buch über Datenanalyse mit PySpark. Das Buch besteht aus einer Reihe von Richtlinien und Beispielen, die Software- und Dateningenieuren helfen sollen, Datenprobleme auf möglichst einfache Weise zu lösen. Wie du weißt, gibt es viele Wege, jedes Datenproblem zu lösen: PySpark ermöglicht es uns, einfachen Code für komplexe Probleme zu schreiben. Das ist das Motto, das ich in diesem Buch zum Ausdruck bringen möchte: Halte es einfach und verwende Parameter, damit deine Lösung von anderen Entwicklern wiederverwendet werden kann. Mein Ziel ist es, den Lesern beizubringen, wie man über Daten nachdenkt und ihre Ursprünge und ihre endgültige Form versteht, und zu zeigen, wie man grundlegende Datenumwandlungsmuster zur Lösung einer Vielzahl von Datenproblemen verwendet.

Für wen dieses Buch ist

Um dieses Buch effektiv nutzen zu können, ist es hilfreich, die Grundlagen der Programmiersprache Python zu kennen, z. B. die Verwendung von Konditionalen (if-then-else), das Durchlaufen von Listen und das Definieren und Aufrufen von Funktionen. Auch wenn du eine andere Programmiersprache (z. B. Java oder Scala) verwendest und Python nicht kennst, kannst du das Buch nutzen, da ich eine gute Einführung in Spark und PySpark gegeben habe.

Dieses Buch richtet sich vor allem an Personen, die große Datenmengen analysieren und verteilte Algorithmen mit der Spark-Engine und PySpark entwickeln wollen. Ich habe einfache Beispiele gegeben, die zeigen, wie man ETL-Operationen durchführt und verteilte Algorithmen in PySpark schreibt. Die Codebeispiele sind so geschrieben, dass du sie einfach ausschneiden und einfügen kannst, um die Aufgabe zu erledigen.

Der Beispielcode auf GitHub ist eine großartige Ressource, um mit deinen eigenen Datenprojekten zu beginnen.

Wie dieses Buch organisiert ist

Das Buch besteht aus 12 Kapiteln, die in drei Teile gegliedert sind:

Teil I, "Grundlagen"

In den ersten vier Kapiteln werden die Grundlagen von Spark und PySpark behandelt und Datentransformationen wie Mapper, Filter und Reducer vorgestellt. Sie enthalten viele praktische Beispiele, die dir den Einstieg in deine eigenen PySpark-Projekte erleichtern. Ungefähr 95 % aller Datenprobleme können mit einfachen PySpark-Datentransformationen (wie map(), flatMap(), filter() und reduceByKey()) gelöst werden, die in den ersten vier Kapiteln dieses Buches vorgestellt werden. Hier ist ein genauerer Blick auf das, was du hier finden wirst:

  • Kapitel 1, "Einführung in Spark und PySpark", gibt einen Überblick über Datenalgorithmen und führt in die Verwendung von Spark und PySpark zur Lösung von Datenanalyseproblemen ein.

  • Kapitel 2, "Transformationen in Aktion", zeigt, wie du Spark-Transformationen (Mapper, Filter und Reducer) nutzt, um echte Datenprobleme zu lösen.

  • In Kapitel 3, "Mapper-Transformationen", werden die am häufigsten verwendeten Mapper-Transformationen vorgestellt: map(),filter(), flatMap(), und mapPartitions().

  • Kapitel 4, "Reduktionen in Spark", konzentriert sich auf Reduktionstransformationen (wie reduceByKey(), groupByKey() undcombineByKey()), die eine sehr wichtige Rolle bei der Gruppierung von Daten nach Schlüsseln spielen. Es werden viele einfache, aber nützliche Beispiele gegeben, um sicherzustellen, dass du diese Reduktioneneffektiv nutzen kannst.

Teil II, "Arbeiten mit Daten"

In den nächsten vier Kapiteln geht es um die Partitionierung von Daten, Graphenalgorithmen, das Lesen/Schreiben von Daten aus/zu vielen verschiedenen Datenquellen und Ranking-Algorithmen:

  • In Kapitel 5, "Partitionierung von Daten", werden Funktionen zur physischen Partitionierung von Daten auf bestimmte Datenspalten vorgestellt. Durch diese Partitionierung können deine SQL-Abfragen (z. B. in Amazon Athena oder Google BigQuery) einen Teil der Daten und nicht den gesamten Datensatz analysieren, was die Abfrageleistung verbessert.

  • In Kapitel 6, "Graph-Algorithmen", wird eines der wichtigsten externen Spark-Pakete, GraphFrames, vorgestellt, mit dem große Graphen in der verteilten Umgebung von Spark analysiert werden können.

  • In Kapitel 7, "Interaktion mit externen Datenquellen", erfährst du, wie du Daten aus einer Vielzahl von Datenquellen lesen und in sie schreiben kannst.

  • In Kapitel 8, "Ranking-Algorithmen", werden zwei wichtige Ranking-Algorithmen vorgestellt: PageRank (wird in Suchmaschinen verwendet) und Rank Product (wird in der Genanalyse verwendet).

Teil III, "Datenentwurfsmuster"

Die letzten vier Kapitel befassen sich mit praktischen Datenentwurfsmustern, die auf lockere Art und Weise mit soliden Beispielen vorgestellt werden:

  • Kapitel 9, "Klassische Datenentwurfsmuster", stellt eine Auswahl an grundlegenden Datenentwurfsmustern oder wiederverwendbaren Lösungen vor, die häufig zur Lösung einer Vielzahl von Datenproblemen verwendet werden. Beispiele sind Input-Map-Output und Input-Filter-Output.

  • In Kapitel 10, "Praktische Datenentwurfsmuster", werden gängige und praktische Datenentwurfsmuster für Aufgaben wie das Kombinieren, Zusammenfassen, Filtern und Organisieren von Daten vorgestellt. Diese Muster werden informell und mit praktischen Beispielen präsentiert.

  • In Kapitel 11, "Join Design Patterns", werden einfache Muster für die Verknüpfung von zwei oder mehr Datensätzen vorgestellt; außerdem werden einige Leistungskriterien zur Verbesserung der Effizienz vonJoin-Algorithmen diskutiert.

  • In Kapitel 12, "Feature Engineering in PySpark", werden die gängigsten Feature-Engineering-Techniken vorgestellt, die bei der Entwicklung vonAlgorithmen für maschinelles Lernen verwendet werden.

Bonuskapitel

Da ich dieses Buch nicht zu umfangreich machen wollte, habe ich zusätzliches Material zu Themen wie TF-IDF, Korrelation und k-mers als Bonuskapitelin das GitHub-Repositorydes Buches aufgenommen.

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 wörtlich eingegeben werden muss.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unterhttps://github.com/mahmoudparsian/data-algorithms-with-spark zum Download bereit.

Wenn du eine technische Frage oder ein Problem mit den Codebeispielen hast, sende 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: "Datenalgorithmen mit Spark von Mahmoud Parsian (O'Reilly). Copyright 2022 Mahmoud Parsian, 978-1-492-08238-5."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter 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, Konferenzen 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 findest 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)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/data-algorithms-with-spark aufrufen .

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

Weitere Informationen zu unseren Büchern, Kursen, Konferenzen und Neuigkeiten findest du auf unserer Website unter http://www.oreilly.com.

Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media

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

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

Danksagungen

Die Idee zu diesem Buch stammt von Jess Haberman (Senior Acquisitions Editor bei O'Reilly Media). Ich bin ihr sehr dankbar, dass sie sich gemeldet hat - vielen Dank, Jess! Ich stehe in der Schuld von Melissa Potter (Content Development Editor bei O'Reilly Media), die seit Beginn dieses Projekts unermüdlich mit mir zusammengearbeitet und mir so sehr geholfen hat, das Buch zu verbessern. Vielen Dank, Melissa! Vielen Dank an die Lektorin Rachel Head, die das gesamte Buch hervorragend redigiert hat; wenn du dieses Buch lesen und verstehen kannst, dann ist das Rachels Verdienst. Ich möchte mich auch bei Christopher Faucher (dem Produktionslektor) bedanken, der großartige Arbeit geleistet und dafür gesorgt hat, dass die Fristen eingehalten wurden und alles an seinem Platz ist. Es ist keine leichte Aufgabe, ein Buch durch die Produktion zu bringen, aber Christopher hat einen großartigen Job gemacht.

Vielen Dank an die Fachgutachter Parviz Deyhim und Benjamin Muskalla für die sehr sorgfältige Durchsicht meines Buches und die darauf folgenden Kommentare, Korrekturen und Vorschläge. Mein besonderer Dank gilt auch meinem Doktorvater und lieben Freund Dr. Ramachandran Krishnaswamy, von dem ich so viel gelernt habe; ich werde die Freundschaft mit ihm immer in Ehren halten.

Zusätzlich zu den PySpark-Lösungen, die ich für alle Kapitel auf GitHub zur Verfügung gestellt habe, haben Deepak Kumar und Biman Mandal auch Scala-Lösungen zur Verfügung gestellt, was eine großartige Ressource für die Leser ist. Vielen Dank, Deepak und Biman. Zu guter Letzt möchte ich mich ganz herzlich bei Dr. Matei Zaharia (dem Erfinder von Apache Spark) für sein Vorwort zu meinem Buch bedanken.

Get Datenalgorithmen mit Spark 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.