Der Unterschied, die Verbindung und die gegenseitige Konvertierung von RDD, DataFrame und DataSet in Spark

RDD: RDD (Resilient Distributed Dataset) wird als Resilient Distributed Dataset bezeichnet. Es gehört zum SpqrkCore-Modul. Es ist die grundlegendste Datenabstraktion in Spark. Im Code ist RDD eine abstrakte Klasse, die eine flexible, unveränderliche Datei darstellt. und partitionierbar. Die Elemente im Inneren können parallel berechnet werden. Und RDD stellt einen schreibgeschützten partitionierten Datensatz dar, und Änderungen an der RDD können nur durch die Konvertierungsoperation der RDD vorgenommen werden.

DataFrame: Es gehört zum SparkSql-Modul und ist ein verteilter Datensatz, der auf RDD basiert und einer zweidimensionalen Tabelle in einer herkömmlichen Datenbank ähnelt . Im Vergleich zu RDD enthält es mehr Schema-Metainformationen, dh die strukturierten Informationen im DataFrame enthalten den Feldnamen und den Typ jeder Spalte. Dadurch kann SparkSql die spezifischen Informationen der Daten leicht verstehen und die Ausführungseffizienz der Aufgabe verbessern ...

Ein Bild, um den Unterschied zwischen DataFrame und RDD zu verstehen:

Fügen Sie hier eine Bildbeschreibung ein

DataSet: Es gehört auch zum SparkSql-Modul. Es bietet die Vorteile einer für Spark SQL optimierten Ausführungs-Engine . Es handelt sich um eine verteilte Datenerfassung, die auf DataFrame basiert. DateSet integriert die Vorteile von RDD und DataFrame, da RDD unstrukturierte Daten unterstützt. DataFrame unterstützt strukturierte Daten Während DataSet strukturierte und unstrukturierte Daten unterstützt. Im Vergleich zu DataFrame bietet DataSet eine stark typisierte Methode zum Abrufen von Daten (da Sie den Typ und den Index der Daten kennen müssen, um eine Datenspalte in einem DataFrame abzurufen, vorausgesetzt, dass für das Abrufen des Namens der ersten Spalte getString (0) erforderlich ist. , Im DataSet wird nur _.name benötigt), daher besteht der Hauptunterschied zwischen ihm und DataFrame in der Typbestimmung. DataFrame führt zur Laufzeit eine Typprüfung durch, während DataSet dies zur Kompilierungszeit des Programms durchführt. Die Typprüfung hat die Funktion Typprüfung. Eine andere Sache ist, dass DataSet sowohl über Funktionen zur Typensicherheitsprüfung als auch zur Abfrageoptimierung von DataFrame verfügt .

Die Verbindung von RDD, DataFrame und DataSet:

1.RDD、DataFrame、DataSet全都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利;

2.三者都有惰性机制,在进行create、transformation,如map方法时,不会立即执行,只有在遇到Action如foreach时,三者才会开始遍历运算;

3.三者有许多共同的函数,如filter,排序等;

4.在对DataFrame和Dataset进行操作许多操作都需要这个包:import spark.implicits._(在创建好SparkSession对象后尽量直接导入,要不然有的操作会报错)

5.RDD适用于迭代计算和数据这一类的操作,处理结构化的数据一般用DataFrame和Dataset进行。

RDD-, DataFrame- und DataSet-Konvertierungsdiagramm:

Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/weixin_44080445/article/details/110395504
Empfohlen
Rangfolge