Einführung in den Spark-Datensatz

Dataset ist eine Datenstruktur in Spark SQL, die Sicherheit beim Kompilieren, die objektorientierte Schnittstelle sowie die Optimierung von Spark SQL bietet.

Konzeptionell handelt es sich um eine speicherinterne Tabellenstruktur mit Zeilen und Spalten, die wie bei Dataframe auf mehrere Knoten verteilt ist.

Es ist eine Erweiterung des DataFrame. Der Hauptunterschied zwischen Dataset und DataFrame besteht darin, dass Datasets stark typisiert sind.

(Dataset) = (Dataframe + Sicherheit beim Kompilieren)

Datensatz wurde in Spark 1.6 als experimentelle API veröffentlicht. Sowohl Dataframe als auch Dataset sind in der Spark 2.0-Version vereinheitlicht, und Dataframe wird zu einem Alias ​​für Dataset (Row).

Datenrahmen = Datensatz (Zeile)

Warum brauchen wir Spark Dataset?

Um ein klares Verständnis des Datensatzes zu haben, müssen wir mit einer kleinen Geschichte des Funkens und seiner Entwicklung beginnen.

RDD ist der Kern von Spark. Inspiriert von SQL und um die Arbeit zu vereinfachen, wurde Dataframe auf der Oberseite von RDD erstellt. DataFrame entspricht einer Tabelle in einer relationalen Datenbank oder einem DataFrame in Python.

RDD bietet Sicherheit beim Kompilieren, es gibt jedoch keine automatische Optimierung in RDD.

Dataframe bietet eine automatische Optimierung, aber es fehlt die Sicherheit beim Kompilieren.

Der Datensatz wird als Erweiterung des Datenrahmens hinzugefügt. Dataset kombiniert die Funktionen sowohl von RDD (dh Sicherheit beim Kompilieren) als auch von Dataframe (dh automatische Spark-SQL-Optimierung).

(RDD (Spark 1.0)) -> (Datenrahmen (Spark1.3)) -> (Datensatz (Spark1.6))

Da Dataset kompilierungssicher ist, wird es nur in einer kompilierten Sprache (Java & Scala), nicht jedoch in einer interpretierten Sprache (R & Python) unterstützt. Die Spark Dataframe-API ist jedoch in allen vier von Spark unterstützten Sprachen (Java, Scala, Python und R) verfügbar.

Von Spark unterstützte SpracheDataframe-APIDatensatz-API
Kompilierte Sprache (Java & Scala)JAJA
Interpretierte Sprache (R & Python)JANEIN

Wie erstelle ich einen Spark-Datensatz?

Es gibt mehrere Möglichkeiten, einen Datensatz basierend auf dem Verwendungszweck zu erstellen

1. Erstellen Sie zuerst SparkSession

SparkSession ist ein zentraler Einstiegspunkt in eine Spark-Anwendung, mit der die Interaktion mit der zugrunde liegenden Spark-Funktionalität und die Programmierung von Spark mit DataFrame- und Dataset-APIs möglich sind.

val spark = SparkSession
.builder()
.appName("SparkDatasetExample")
.enableHiveSupport()
.getOrCreate()

  • So erstellen Sie einen Datensatz mit einer grundlegenden Datenstruktur wie Bereich, Reihenfolge, Liste usw.:

Bereich verwenden

Sequenz verwenden

Liste verwenden

  • So erstellen Sie ein Dataset mithilfe der Reihenfolge der Fallklassen, indem Sie die Methode .toDS () aufrufen:

  • So erstellen Sie ein Dataset aus RDD mithilfe von .toDS ():

  • So erstellen Sie das Dataset aus Dataframe mithilfe der Fallklasse:

  • So erstellen Sie das Dataset aus Dataframe mithilfe von Tupeln:

2. Operationen mit dem Spark-Datensatz

  1. Beispiel für die Wortanzahl

  1. Spark-Dataset in Dataframe konvertieren

Wir können auch Spark-Dataset in Datafame konvertieren und Dataframe-APIs wie folgt verwenden:

Funktionen des Spark-Datensatzes

  1. Typ Sicherheit

Der Datensatz bietet Sicherheit beim Kompilieren. Dies bedeutet, dass die Syntax sowie Analysefehler der Anwendung vor der Ausführung beim Kompilieren überprüft werden.

  1. Unveränderlichkeit

Datensatz ist auch unveränderlich wie RDD und Dataframe. Dies bedeutet, dass wir den erstellten Datensatz nicht ändern können. Jedes Mal, wenn ein neues Dataset erstellt wird, wenn eine Transformation auf das Dataset angewendet wird.

  1. Schema

Dataset ist eine speicherinterne Tabellenstruktur mit Zeilen und benannten Spalten.

  1. Leistung und Optimierung

Wie Dataframe verwendet auch das Dataset die Catalyst-Optimierung, um einen optimierten logischen und physischen Abfrageplan zu generieren.

  1. Programmiersprache

Der Datensatz api ist nur in den kompilierten Sprachen Java und Scala vorhanden, nicht jedoch in der interpretierten Sprache Python.

  1. Lazy Evaluation

Wie RDD und Dataframe führt auch der Datensatz die verzögerte Auswertung durch. Dies bedeutet, dass die Berechnung nur erfolgt, wenn eine Aktion ausgeführt wird. Spark macht nur Pläne während der Transformationsphase.

  1. Serialisierung und Garbage Collection

Das Spark-Dataset verwendet keine Standard-Serializer (Kryo- oder Java-Serialisierung). Stattdessen werden die schnellen In-Memory-Encoder von Tungsten verwendet, die die interne Struktur der Daten verstehen und Objekte effizient in internen Binärspeicher umwandeln können. Es wird eine Daten-Serialisierung außerhalb des Heapspeichers unter Verwendung eines Wolfram-Encoders verwendet, sodass keine Speicherbereinigung erforderlich ist.

Fazit

Dataset ist das Beste von RDD und Dataframe. RDD bietet Sicherheit beim Kompilieren, es fehlt jedoch die automatische Optimierung. Dataframe bietet eine automatische Optimierung, aber es fehlt die Sicherheit beim Kompilieren. Dataset bietet sowohl Sicherheit beim Kompilieren als auch automatische Optimierung. Daher ist der Datensatz die beste Wahl für Spark-Entwickler, die Java oder Scala verwenden.

Empfohlene Artikel

Dies ist eine Anleitung zum Spark-Dataset. Hier wird das Erstellen eines Spark-Datasets anhand von Beispielen und Funktionen auf verschiedene Arten erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Spark-Shell-Befehle
  2. Fragen in Vorstellungsgesprächen bei Spark
  3. Karriere in Spark
  4. Spark-Streaming
  5. Verschiedene Operationen in Bezug auf Tupel
  6. Spark SQL Dataframe
  7. Arten von Joins in Spark SQL (Beispiele)
  8. Leitfaden zur Liste der Unix-Shell-Befehle
  9. Top 6 Komponenten von Spark

Kategorie: