RDD:er och DataFrames
Datastrukturer i Spark.
RDD:er och DataFrames är en gratis lektion i Scala för backendutveckling och funktionell programmering på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Scala för backendutveckling och funktionell programmering, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Scala för backendutveckling och funktionell programmering innehåller totalt 4 lektioner.
Vad är Apache Spark?
Apache Spark är en distribuerad motor för storskalig databehandling. Den delar upp data över ett kluster och kör beräkningar parallellt. Scala är Sparks inbyggda språk och ger ett koncist, typsäkert API.
RDD
Resilient Distributed Dataset (RDD) är Sparks lågnivåabstraktion: en oföränderlig, partitionerad samling som kan bearbetas parallellt och återskapas från sin härstamning om en nod slutar fungera.
SparkContext och SparkSession
Ni går in i Spark genom en SparkSession. Dess sparkContext skapar RDD:er; sessionen själv skapar DataFrames och kör SQL.
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
.appName("Demo")
.master("local[*]")
.getOrCreate()Skapa en RDD
Bygg en RDD genom att parallellisera en lokal samling eller läsa en fil. Varje partition bearbetas av en separat uppgift.
val sc = spark.sparkContext
val numbers = sc.parallelize(Seq(1, 2, 3, 4, 5))
val lines = sc.textFile("data.txt")DataFrame
En DataFrame är en distribuerad tabell med namngivna kolumner med typer – ungefär som en RDD med rader plus ett schema. Catalyst-optimeraren kan planera och optimera DataFrame-frågor.
Skapa en DataFrame
Skapa DataFrames från samlingar (med toDF) eller genom att läsa strukturerade filer som CSV, JSON eller Parquet.
import spark.implicits._
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
val csv = spark.read.option("header", "true").csv("people.csv")Inspektera en DataFrame
Använd show för att skriva ut rader, printSchema för att visa kolumntyper och count för att räkna antalet rader.
df.printSchema()
df.show()
println(df.count())Datasets och typsäkerhet
En Dataset är en typad DataFrame: Dataset[T] där T är en case class. Den kombinerar DataFrame-optimering med typkontroller vid kompilering.
import spark.implicits._
case class Person(name: String, age: Int)
val ds = Seq(Person("Alice", 30)).toDS()RDD kontra DataFrame kontra Dataset
Välj utifrån behov:
- RDD – full kontroll, inget schema, ingen optimerare
- DataFrame – schema och Catalyst-optimering, otypade rader
- Dataset – schema, optimering och typsäkerhet
Konvertera mellan dem
Konvertera en DataFrame till en RDD med .rdd eller en RDD med case classes till en DataFrame med .toDF. Datasets konverteras också till DataFrames med .toDF.
val rdd = df.rdd // DataFrame -> RDD[Row]
val back = ds.toDF() // Dataset -> DataFrameVanlig Scala-samling
Konceptuellt fungerar en DataFrame som en distribuerad Scala-samling. Här är en lokal, fristående motsvarighet för att tydliggöra idén.
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}"))
}
}Snabb kontroll
Vilken abstraktion tillhandahåller ett schema, Catalyst-optimering och typsäkerhet vid kompilering?
Sammanfattning
Ni har bekantat er med Sparks dataabstraktioner:
SparkSessionsom ingångspunkt- RDD – lågnivåabstraktion för distribuerade samlingar
- DataFrame – distribuerad tabell med schema
- Dataset – typad DataFrame
Nästa steg: transformationer och actions.
Lär dig Scala med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 39
- Lektioner
- 143
Vanliga frågor
Är lektionen ”RDD:er och DataFrames” gratis?
Ja – hela texten till ”RDD:er och DataFrames” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Scala för backendutveckling och funktionell programmering, kan Ni uppgradera till CoddyKit PRO. Kursen i Scala för backendutveckling och funktionell programmering innehåller totalt 4 lektioner.
Vad lär jag mig i ”RDD:er och DataFrames”?
Datastrukturer i Spark. Ni övar på Scala för backendutveckling och funktionell programmering med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Scala för backendutveckling och funktionell programmering?
Du behöver inga förkunskaper. Utbildningen i Scala för backendutveckling och funktionell programmering på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”RDD:er och DataFrames”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Scala för backendutveckling och funktionell programmering-lektionen?
Ja. Varje Scala för backendutveckling och funktionell programmering-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- RDD:er och DataFrames
- Transformationer och actions
- Spark SQL
- Aggregat