Spark SQL
Interrogare i dati
Spark SQL è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 3 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'è Spark SQL?
Spark SQL consente di interrogare dati distribuiti usando SQL standard o un'API DataFrame tipizzata. Entrambe passano attraverso lo stesso ottimizzatore Catalyst, quindi hanno prestazioni identiche.
Viste temporanee
Per eseguire SQL su un DataFrame, lo registri come vista. createOrReplaceTempView lo rende interrogabile tramite nome nella sessione corrente.
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
df.createOrReplaceTempView("people")Esecuzione di una query SQL
Usi spark.sql con una stringa SQL. Restituisce un nuovo DataFrame che può essere ulteriormente trasformato o visualizzato.
val adults = spark.sql("SELECT name FROM people WHERE age >= 18")
adults.show()La DSL dei DataFrame
La stessa query nella DSL tipizzata. L'oggetto functions fornisce col, confronti e molte espressioni integrate.
import org.apache.spark.sql.functions._
val adults = df.filter(col("age") >= 18).select("name")Selezione e alias
Proietti le colonne con select e le rinomini con as / alias. Le colonne calcolate usano espressioni basate su col.
import org.apache.spark.sql.functions._
df.select(
col("name"),
(col("age") + 1).as("age_next_year")
).show()Filtraggio delle righe
where e filter sono sinonimi. Combini le condizioni con && e || e usi isNull / isNotNull per i dati mancanti.
import org.apache.spark.sql.functions._
df.where(col("age") > 20 && col("name").isNotNull).show()Ordinamento e limitazione
orderBy ordina (usi desc per l'ordine decrescente) e limit imposta il numero massimo di righe restituite.
import org.apache.spark.sql.functions._
df.orderBy(col("age").desc).limit(5).show()Join
Unisca due DataFrame tramite una chiave con join. Specifichi il tipo di join, ad esempio "inner", "left" o "outer".
val joined = orders.join(customers, Seq("customer_id"), "inner")
joined.show()Funzioni integrate
Il pacchetto functions offre centinaia di funzioni di supporto: upper, concat, when, round, funzioni per le date e molto altro.
import org.apache.spark.sql.functions._
df.withColumn("name_upper", upper(col("name")))
.withColumn("category", when(col("age") >= 30, "senior").otherwise("junior"))
.show()Lettura e scrittura delle tabelle
Spark SQL legge e scrive molti formati. Parquet è colonnare ed efficiente; saveAsTable rende i dati persistenti nel metastore.
val data = spark.read.parquet("input.parquet")
data.write.mode("overwrite").parquet("output.parquet")Query SQL-like in Scala semplice
Un analogo autosufficiente: interrogare una raccolta in memoria con i metodi delle raccolte riproduce una SELECT/WHERE di Spark SQL.
object Main {
case class Person(name: String, age: Int)
def main(args: Array[String]): Unit = {
val people = Seq(Person("Alice", 30), Person("Bob", 25))
val adults = people.filter(_.age >= 18).map(_.name)
println(adults.mkString(", "))
}
}Verifica rapida
Che cosa deve fare con un DataFrame prima di interrogarlo con spark.sql("SELECT ...")?
Riepilogo
Ha interrogato i dati con Spark SQL:
- registrare le viste con
createOrReplaceTempView - eseguire SQL tramite
spark.sqlo la DSL dei DataFrame select,where,orderBy,join- funzioni integrate e I/O di Parquet
Prossimo argomento: aggregazioni.
Domande Frequenti
La lezione «Spark SQL» è gratuita?
Sì — il testo completo di «Spark SQL» è 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 «Spark SQL»?
Interrogare i dati 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 3 di 4.
Quanto tempo richiede la lezione «Spark SQL»?
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.