Wenn Sie mit Spark arbeiten, werden Ihnen folgende drei APIs begegnen: DataFrames, Datasets und RDDsrt
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:
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.
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:
In Spark können DataFrames auf verschiedene Arten erstellt werden:
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.
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:
Der größte Nachteil von Datasets besteht darin, dass sie ein Typecasting in Strings erfordern.
