0Pricing
Scala for Backend Engineering & Functional Programming · Lezione

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 -> DataFrame

Collezione 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:

  • SparkSession come 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

  1. RDD e DataFrame
  2. Trasformazioni e action
  3. Spark SQL
  4. Aggregazioni
← Torna a Scala for Backend Engineering & Functional Programming