Spark SQL
Ställ frågor till data.
Spark SQL är en gratis lektion i Scala för backendutveckling och funktionell programmering på CoddyKit. Detta är lektion 3 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 Spark SQL?
Spark SQL låter er fråga distribuerade data med vanlig SQL eller ett typat DataFrame-API. Båda går genom samma Catalyst-optimerare och presterar därför identiskt.
Tillfälliga vyer
För att köra SQL mot en DataFrame registrerar ni den som en vy. createOrReplaceTempView gör den frågbar med namn under den aktuella sessionen.
val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
df.createOrReplaceTempView("people")Köra en SQL-fråga
Använd spark.sql med en SQL-sträng. Den returnerar en ny DataFrame som ni kan transformera vidare eller visa.
val adults = spark.sql("SELECT name FROM people WHERE age >= 18")
adults.show()DataFrame-DSL:en
Samma fråga i den typade DSL:en. Objektet functions tillhandahåller col, jämförelser och många inbyggda uttryck.
import org.apache.spark.sql.functions._
val adults = df.filter(col("age") >= 18).select("name")Välja och ge alias
Projicera kolumner med select och byt namn med as / alias. Beräknade kolumner använder uttryck över col.
import org.apache.spark.sql.functions._
df.select(
col("name"),
(col("age") + 1).as("age_next_year")
).show()Filtrera rader
where och filter är synonymer. Kombinera villkor med && och ||, och använd isNull / isNotNull för data som saknas.
import org.apache.spark.sql.functions._
df.where(col("age") > 20 && col("name").isNotNull).show()Sortera och begränsa
orderBy sorterar (använd desc för fallande ordning), och limit begränsar antalet returnerade rader.
import org.apache.spark.sql.functions._
df.orderBy(col("age").desc).limit(5).show()Join-operationer
Slå ihop två DataFrames på en nyckel med join. Ange join-typen, till exempel "inner", "left" eller "outer".
val joined = orders.join(customers, Seq("customer_id"), "inner")
joined.show()Inbyggda funktioner
Paketet functions erbjuder hundratals hjälpverktyg: upper, concat, when, round, datumfunktioner med mera.
import org.apache.spark.sql.functions._
df.withColumn("name_upper", upper(col("name")))
.withColumn("category", when(col("age") >= 30, "senior").otherwise("junior"))
.show()Läsa och skriva tabeller
Spark SQL läser och skriver många format. Parquet är kolumnbaserat och effektivt; saveAsTable sparar data i metastore.
val data = spark.read.parquet("input.parquet")
data.write.mode("overwrite").parquet("output.parquet")En enkel SQL-liknande fråga i Scala
En fristående analog: att fråga en samling i minnet med samlingsmetoder motsvarar en Spark SQL-SELECT/WHERE-fråga.
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(", "))
}
}Snabb kontroll
Vad måste ni göra med en DataFrame innan ni frågar den med spark.sql("SELECT ...")?
Sammanfattning
Ni har frågat data med Spark SQL:
- registrera vyer med
createOrReplaceTempView - kör SQL via
spark.sqleller DataFrame-DSL:en select,where,orderBy,join- inbyggda funktioner och Parquet I/O
Nästa: aggregeringar.
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 ”Spark SQL” gratis?
Ja – hela texten till ”Spark SQL” 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 ”Spark SQL”?
Ställ frågor till data. 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 3 av 4.
Hur lång tid tar lektionen ”Spark SQL”?
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.