Wenn es um die Verarbeitung von Datenbanken mit Python geht, kommt einem sofort die pandas-Bibliothek in den Sinn. Mit wachsender Größe der Datenbanken, nehmen allerdings die Berechnungen immer mehr Zeit in Anspruch.
Doch zum Glück gibt es eine andere Python-Bibliothek, die pandas recht ähnlich ist und es ermöglicht, sehr große Datenmengen zu verarbeiten: PySpark.
Apache Spark ist ein vom AMPLab der University of California Berkeley entwickeltes Open-Source-Framework zur Verarbeitung großer Datenbanken unter Verwendung von Distributed Computing (Verteiltes Rechnen), einer Technik, bei der mehrere in Clustern verteilte Recheneinheiten zugunsten eines einzelnen Projekts genutzt werden, um die Ausführungszeit für eine Anfrage zu verringern.
Spark wurde in Scala entwickelt und ist in seiner nativen Sprache am leistungsfähigsten. Die Bibliothek PySpark bietet jedoch die Möglichkeit, die Software mit der Sprache Python zu verwenden, ohne dass die Leistung von Scala-Implementierungen beeinträchtigt wird.
Pyspark ist daher eine gute Alternative zur Panda-Bibliothek, wenn Sie große Datensätze verarbeiten wollen, die zeitaufwändige Berechnungen erfordern.
💡Auch interessant:
Apache Spark |
Apache Kafka |
Apache Cassandra |
Apache Schulung |
Apache Airflow |
Apache Flume |
Apache Storm |
Die Architektur von Spark
Zunächst einmal ist es wichtig, die Grundlagen der Funktionsweise von Spark zu verstehen.
Wenn man über PySpark mit Spark interagiert, sendet man Anweisungen an den Driver. Dieser koordiniert sämtliche Vorgänge. Diese Kommunikation wird mittels eines SparkContext-Objekts vorgenommen. Dieses Objekt koordiniert die verschiedenen Berechnungen in den verschiedenen Clustern.
Der große Vorteil von Spark liegt darin, dass der Code völlig unabhängig vom SparkContext ist. Dadurch kann man seinen Code lokal auf jedem beliebigen Rechner entwickeln. In diesem Artikel werden wir einige zentrale Elemente von Spark vorstellen, beginnend mit RDDs, der elementarsten Struktur von Spark. Anschließend werden wir uns mit dem DataFrame-Typ beschäftigen, einer komplexeren Struktur als RDD, die für Machine Learning optimiert wurde.
RDD - Resilient Distributed Data
Ein RDD ist die Spark-Darstellung einer Datentabelle. Diese besteht aus einer Sammlung von Elementen, die man verwenden kann, um Tupel, Wörterbücher, Listen oder Ähnliches zu speichern. Die Stärke eines RDD liegt in seiner Fähigkeit, den Code möglichst bequem auszuwerten: Berechnungen werden nämlich so lange wie möglich aufgeschoben.
So wird beim Import von Dateien zunächst nur ein Zeiger erstellt. Die tatsächliche Berechnung erfolgt erst, wenn man versucht, ein Ergebnis anzuzeigen oder zu verwenden.
Da ein RDD zeilenweise gelesen wird, ist es besonders effizient für die Verarbeitung von Textdateien (z. B. die Häufigkeit bestimmter Wörter in einem Text zählen). Für spaltenbasierte Berechnungen ist es jedoch eine ungeeignete Struktur.
Um Machine Learning zu betreiben, müssen wir daher eine neue Struktur einführen: DataFrames.
Pyspark DataFrame
Der Pyspark DataFrame ist der derzeit optimale Aufbau für Machine Learning. Er verwendet grundsätzlich die gleichen Prinzipien wie ein RDD, ist aber in einer SQL-Struktur sowohl in Spalten als auch in Zeilen strukturiert. Seine Form wurde von den DataFrames des Pandas-Moduls inspiriert.
Dank der DataFrame-Struktur können wir also leistungsfähige Berechnungen in einer vertrauten (weil pandas-ähnlichen) Sprache durchführen ohne die Kosten, die mit dem Erlernen einer neuen funktionalen Sprache verbunden sind.
Spark SQL ist ein Modul von Spark, das den Umgang mit strukturierten Daten ermöglicht. Innerhalb dieses Moduls wurde auch der Spark DataFrame entwickelt.
Spark SQL verfügt über ein anschauliches Infoblatt, das sowohl Beispiele als auch Erklärungen liefert. Im Gegensatz zu dem, was man im Internet findet, ist dieses Infoblatt das einzige Dokument, das ständig mit der neuesten Version von Spark aktualisiert wird.
Dieser Artikel ist nur eine Einführung in die wichtigsten Begrifflichkeiten von Pyspark. Unsere Weiterbildungen beinhalten ein ganzes Modul zum Erlernen dieses wichtigen Tools für den Umgang mit großen Datenmengen. Wenn Du dieses Instrument beherrschen möchtest, empfehlen wir Dir eine unserer Weiterbildungen in Data Science.