Apache Spark ist eine verteilte Verarbeitungs-Engine, die strukturierte, semistrukturierte und unstrukturierte Daten in großem Umfang verarbeiten kann. Entwickler verwenden die Spark API, um mit der Engine zu interagieren und verteilte Datenvorgänge zu definieren.
Das Herzstück der modernen Spark-Entwicklung ist die Spark DataFrame API. Ein DataFrame organisiert und verarbeitet verteilte Daten in benannten Spalten, ähnlich wie eine Tabelle in einer relationalen Datenbank oder einer Tabellenkalkulation. Sie bietet eine strukturierte, deklarative Schnittstelle zur Analyse riesiger Datasets und optimiert gleichzeitig automatisch die physische Ausführung im Hintergrund.
Um zu verstehen, wie die Spark API Ihren Code in einem verteilten Netzwerk ausführt, ist es wichtig, die grundlegenden Komponenten der Laufzeitarchitektur zu kennen:
Bei der Entwicklung verteilter Datenpipelines können Entwickler zwischen zwei primären Programmierschnittstellen wählen:
Für fast alle Data-Engineering- und Data-Science-Anwendungsfälle ist die DataFrame API die bevorzugte Wahl. RDDs sind für Szenarien reserviert, in denen Sie unstrukturierte Rohdaten (z. B. Binärdateien oder Medienstreams) mit benutzerdefinierten Java-Objekten bearbeiten müssen. DataFrames erfordern weniger Code, werden automatisch schneller ausgeführt und nutzen die Off-Heap-Binärspeicherverwaltung, um Engpässe bei der automatischen Speicherbereinigung der JVM zu umgehen.
Die Spark DataFrame API vereinfacht die rechenintensiven Aufgaben der Verarbeitung, Bereinigung und Vorbereitung großer Datenmengen.
Die Spark DataFrame API dient als programmatische Grundlage für die erweiterten Verarbeitungsbibliotheken von Spark:
Deklarative Optimierung
DataFrames verwenden einen integrierten Abfrageoptimierer namens Catalyst Optimizer. Wenn Sie DataFrame-Code schreiben, schreibt der Optimierer automatisch den physischen Ausführungsplan um und wendet Filter-Pushdown, Projektionsbereinigung und Join-Neuordnung an, um so schnell wie möglich ohne manuelle Abstimmung ausgeführt zu werden.
Sprachliche Flexibilität
Unabhängig davon, ob Ihr Team Code in Python (PySpark), Scala, Java oder R schreibt, sorgt die DataFrame API für eine identische Leistung. Der zugrunde liegende Ausführungsplan wird innerhalb derselben JVM-unabhängigen Ausführungsebene kompiliert und optimiert.
Effiziente Speicherverwaltung
DataFrames nutzt die Tungsten-Ausführungs-Engine, um Daten in einem hochkomprimierten, Off-Heap-Binärformat zu speichern. Dadurch wird der Overhead für die Erstellung von JVM-Objekten eliminiert und verhindert, dass Executor-Threads durch Pausen bei der automatischen Speicherbereinigung eingefroren werden.
Die Ausführung von Open-Source-Spark erfordert herkömmlicherweise eine manuelle Clusterkonfiguration, die Verwaltung von Softwareversionen und komplexes Netzwerk-Peering. Google Cloud vereinfacht dies durch den Managed Service for Apache Spark, der die verteilte Ausführung in eine vollständig verwaltete, unternehmensreife Datenplattform verwandelt.
Datenteams führen Spark DataFrame-Arbeitslasten in Google Cloud mit den folgenden Funktionen aus:
Profitieren Sie von einem Guthaben über 300 $, um Google Cloud und mehr als 20 „Immer kostenlos“ Produkte kennenzulernen.