RDD e DataFrame
Astrazioni dei dati di Spark
RDD e DataFrame è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Scala for Backend Engineering & Functional Programming, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Che cos'è Apache Spark?
Apache Spark è un motore distribuito per l'elaborazione di grandi quantità di dati. Suddivide i dati in un cluster ed esegue i calcoli in parallelo. Scala è il linguaggio nativo di Spark e offre un'API concisa e consapevole dei tipi.
L'RDD
Il Resilient Distributed Dataset (RDD) è l'astrazione di basso livello di Spark: una collezione immutabile e partizionata che può essere elaborata in parallelo e ricostruita dalla lineage in caso di errore di un nodo.
SparkContext e SparkSession
Si accede a Spark tramite una SparkSession. Il suo sparkContext crea gli RDD; la sessione stessa crea i DataFrame ed esegue SQL.
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder()
.appName("Demo")
.master("local[*]")
.getOrCreate()Creazione di un RDD
Costruisca un RDD parallelizzando una collezione locale oppure leggendo un file. Ogni partizione viene elaborata da un task separato.
val sc = spark.sparkContext
val numbers = sc.parallelize(Seq(1, 2, 3, 4, 5))
val lines = sc.textFile("data.txt")Il DataFrame
Un DataFrame è una tabella distribuita con colonne denominate e tipizzate, simile a un RDD di righe con uno schema. L'ottimizzatore Catalyst può pianificare e ottimizzare le query sui DataFrame.
Creazione di un DataFrame
Crei DataFrame da collezioni (con toDF) oppure leggendo file strutturati come CSV, JSON o Parquet.
import spark.implicits._
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
val csv = spark.read.option("header", "true").csv("people.csv")Ispezione di un DataFrame
Usi show per stampare le righe, printSchema per visualizzare i tipi delle colonne e count per ottenere il numero di righe.
df.printSchema()
df.show()
println(df.count())Dataset e sicurezza dei tipi
Un Dataset è un DataFrame tipizzato: Dataset[T], dove T è una case class. Combina l'ottimizzazione dei DataFrame con i controlli dei tipi a compile time.
import spark.implicits._
case class Person(name: String, age: Int)
val ds = Seq(Person("Alice", 30)).toDS()RDD, DataFrame o Dataset
Scelga in base alle esigenze:
- RDD — controllo completo, nessuno schema, nessun ottimizzatore
- DataFrame — schema e ottimizzazione Catalyst, righe non tipizzate
- Dataset — schema, ottimizzazione e sicurezza dei tipi
Conversione tra le strutture
Converta un DataFrame in un RDD con .rdd oppure un RDD di case class in un DataFrame con .toDF. Anche i Dataset possono essere convertiti in DataFrame con .toDF.
val rdd = df.rdd // DataFrame -> RDD[Row]
val back = ds.toDF() // Dataset -> DataFrameCollezione Scala semplice
Concettualmente, un DataFrame si comporta come una collezione Scala, ma distribuita. Ecco l'analogo locale e autonomo, utile per comprendere il concetto.
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}"))
}
}Verifica rapida
Quale astrazione offre uno schema, l'ottimizzazione Catalyst e la sicurezza dei tipi a compile time?
Riepilogo
Ha conosciuto le astrazioni dei dati di Spark:
SparkSessioncome punto di ingresso- RDD — collezione distribuita di basso livello
- DataFrame — tabella distribuita con schema
- Dataset — DataFrame tipizzato
Prossimo argomento: trasformazioni e azioni.
Domande Frequenti
La lezione «RDD e DataFrame» è gratuita?
Sì — il testo completo di «RDD e DataFrame» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Scala for Backend Engineering & Functional Programming, passa a CoddyKit PRO. Il corso Scala for Backend Engineering & Functional Programming include 4 lezioni in totale.
Cosa imparerò in «RDD e DataFrame»?
Astrazioni dei dati di Spark Eserciti Scala for Backend Engineering & Functional Programming con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Scala for Backend Engineering & Functional Programming?
Non è richiesta alcuna esperienza precedente. Scala for Backend Engineering & Functional Programming su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «RDD e DataFrame»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Scala for Backend Engineering & Functional Programming?
Sì. Ogni lezione Scala for Backend Engineering & Functional Programming include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- RDD e DataFrame
- Trasformazioni e action
- Spark SQL
- Aggregazioni