RDDs und DataFrames
Datenabstraktionen von Spark
RDDs und DataFrames ist eine kostenlose Scala for Backend Engineering & Functional Programming-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Scala for Backend Engineering & Functional Programming-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.
Was ist Apache Spark?
Apache Spark ist eine verteilte Engine zur Verarbeitung großer Datenmengen. Sie teilt Daten auf einen Cluster auf und führt Berechnungen parallel aus. Scala ist die native Sprache von Spark und bietet eine kompakte, typsichere API.
Das RDD
Das Resilient Distributed Dataset (RDD) ist die Abstraktion von Spark auf niedriger Ebene: eine unveränderliche, partitionierte Sammlung, die parallel verarbeitet und bei einem Knotenausfall anhand ihrer Abstammung neu erstellt werden kann.
SparkContext und SparkSession
Sie greifen über eine SparkSession auf Spark zu. Deren sparkContext erstellt RDDs; die Session selbst erstellt DataFrames und führt SQL aus.
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
.appName("Demo")
.master("local[*]")
.getOrCreate()Ein RDD erstellen
Erstellen Sie ein RDD, indem Sie eine lokale Sammlung parallelisieren oder eine Datei einlesen. Jede Partition wird von einer separaten Aufgabe verarbeitet.
val sc = spark.sparkContext
val numbers = sc.parallelize(Seq(1, 2, 3, 4, 5))
val lines = sc.textFile("data.txt")Der DataFrame
Ein DataFrame ist eine verteilte Tabelle mit benannten, typisierten Spalten – ähnlich wie ein RDD aus Zeilen plus Schema. Der Catalyst-Optimierer kann DataFrame-Abfragen planen und optimieren.
Einen DataFrame erstellen
Erstellen Sie DataFrames aus Sammlungen (mit toDF) oder durch das Einlesen strukturierter Dateien wie CSV, JSON oder Parquet.
import spark.implicits._
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
val csv = spark.read.option("header", "true").csv("people.csv")Einen DataFrame untersuchen
Verwenden Sie show, um Zeilen auszugeben, printSchema, um die Spaltentypen anzuzeigen, und count für die Anzahl der Zeilen.
df.printSchema()
df.show()
println(df.count())Datasets und Typsicherheit
Ein Dataset ist ein typisierter DataFrame: Dataset[T], wobei T eine Case-Klasse ist. Es kombiniert die DataFrame-Optimierung mit Typprüfungen zur Compile-Zeit.
import spark.implicits._
case class Person(name: String, age: Int)
val ds = Seq(Person("Alice", 30)).toDS()RDD vs. DataFrame vs. Dataset
Wählen Sie je nach Bedarf:
- RDD – vollständige Kontrolle, kein Schema, kein Optimierer
- DataFrame – Schema und Catalyst-Optimierung, nicht typisierte Zeilen
- Dataset – Schema, Optimierung und Typsicherheit
Zwischen ihnen konvertieren
Konvertieren Sie einen DataFrame mit .rdd in ein RDD oder ein RDD aus Case-Klassen mit .toDF in einen DataFrame. Auch Datasets lassen sich mit .toDF in DataFrames umwandeln.
val rdd = df.rdd // DataFrame -> RDD[Row]
val back = ds.toDF() // Dataset -> DataFrameLokale Scala-Sammlung
Konzeptionell verhält sich ein DataFrame wie eine verteilte Scala-Sammlung. Hier sehen Sie zum besseren Verständnis das lokale, eigenständige Gegenstück.
object Main {
case class Person(name: String, age: Int)
def main(args: Array[String]): Unit = {
val people = Seq(Person("Alice", 30), Person("Bob", 25))
people.foreach(p => println(s"${p.name}: ${p.age}"))
}
}Kurze Überprüfung
Welche Abstraktion bietet ein Schema, Catalyst-Optimierung und Typsicherheit zur Compile-Zeit?
Zusammenfassung
Sie haben die Datenabstraktionen von Spark kennengelernt:
SparkSessionals Einstiegspunkt- RDD – verteilte Sammlung auf niedriger Ebene
- DataFrame – verteilte Tabelle mit Schema
- Dataset – typisierter DataFrame
Als Nächstes: Transformationen und Aktionen.
Häufig gestellte Fragen
Ist die Lektion „RDDs und DataFrames“ kostenlos?
Ja — der vollständige Text von „RDDs und DataFrames“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Scala for Backend Engineering & Functional Programming-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Scala for Backend Engineering & Functional Programming-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „RDDs und DataFrames“?
Datenabstraktionen von Spark Du übst Scala for Backend Engineering & Functional Programming mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Scala for Backend Engineering & Functional Programming zu starten?
Keine Vorkenntnisse erforderlich. Scala for Backend Engineering & Functional Programming auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „RDDs und DataFrames“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Scala for Backend Engineering & Functional Programming-Lektion Code schreiben und ausführen?
Ja. Jede Scala for Backend Engineering & Functional Programming-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- RDDs und DataFrames
- Transformationen und Actions
- Spark SQL
- Aggregationen