Spark API
Wenn Sie mit Spark arbeiten, werden Ihnen folgende drei APIs begegnen: DataFrames, Datasets und RDDsrt
Was sind Resilient Distributed Datasets?
Bei RDD bzw. Resilient Distributed Datasets handelt es sich um eine Sammlung von Datensätzen mit verteilter Datenverarbeitung, die fehlertolerant und unveränderlich ist. RDDs können parallel mit Low-Level-APIs eingesetzt werden, während ihre Lazy-Funktion den Spark-Betrieb beschleunigt. RDDs unterstützen zwei Arten von Operationen:
- Transformationen: Lazy Operations, die ein weiteres RDD zurückgeben. Dieses RDD verarbeitet keine Daten, es sei denn, es werden Aktionen verwendet. Beispiele für Transformationen sind map(), flatmap(), filter()
- Aktionen: Operationen, die Berechnungen auslösen und Werte liefern. Beispiele für Aktionen sind count, top(), savetofile()
Nachteile von RDDs
Wenn Sie sich für die Arbeit mit einem RDD entscheiden, müssen Sie jedes einzelne RDD optimieren. Darüber hinaus leiten RDDs im Gegensatz zu Datasets und DataFrames das Schema der eingelesenen Daten nicht ab, sodass Sie es selbst angeben müssen.
Was sind DataFrames?
Bei DataFrames handelt es sich um eine verteilte Sammlung von Zeilen unter benannten Spalten. Einfach ausgedrückt ähneln DataFrames einem Excel-Blatt mit Spaltenüberschriften. Sie können es sich auch das Äquivalent zu einer Tabelle in einer relationalen Datenbank oder einem DataFrame in R oder Python vorstellen. Ein DataFrame weist drei gemeinsame Hauptmerkmale mit einem RDD auf:
- Von Natur aus unveränderlich: Sie können ein DataFrame erstellen, aber Sie können es nicht ändern. Ein DataFrame kann genau wie ein RDD transformiert werden.
- Lazy Evaluations: Eine Aufgabe wird erst ausgeführt, wenn eine Aktion durchgeführt wird.
- Verteilt: DataFrames sind ebenso wie RDDs standardmäßig verteilt.
Wie Sie ein DataFrame erstellen
In Spark können DataFrames auf verschiedene Arten erstellt werden:
- Unter Verwendung verschiedener Datenformate,wie zum Beispiel das Laden der Daten aus JSON, CSV, RDBMS, XML oder Parquet
- Durch Laden der Daten aus einem bereits vorhandenen RDD
- Durch programmatische Angabe des Schemas
Nachteile von DataFrames
Der größte Nachteil der DataFrame API besteht darin, dass sie Compile-Zeit nicht sicher unterstützt. Daher ergeben sich Einschränkungen für den Benutzer, wenn die Struktur der Daten nicht bekannt ist.
Was sind Datasets?
Ein Dataset ist eine stark typisierte, unveränderliche Sammlung von Objekten, die einem relationalen Schema zugeordnet sind. Ein Dataset kann mithilfe von JVM-Objekten erstellt und mit komplexen funktionalen Transformationen bearbeitet werden. Datasets können auf zwei Arten erstellt werden:
- Dynamisch
- Durch Lesen aus einer JSON-Datei mit SparkSession.
Nachteile von Datasets
Der größte Nachteil von Datasets besteht darin, dass sie ein Typecasting in Strings erfordern.