Scala voor backend-engineering en functioneel programmeren · Les

Spark SQL

Gegevens opvragen

Les 3 van 413 stappen

Spark SQL is een gratis Scala voor backend-engineering en functioneel programmeren-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Scala voor backend-engineering en functioneel programmeren. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Scala voor backend-engineering en functioneel programmeren bevat in totaal 4 lessen.

Wat is Spark SQL?

Met Spark SQL kun je gedistribueerde gegevens opvragen met standaard-SQL of een getypeerde DataFrame-API. Beide gaan door dezelfde Catalyst-optimizer en presteren daarom identiek.

Tijdelijke weergaven

Om SQL op een DataFrame uit te voeren, registreer je het als een weergave. createOrReplaceTempView maakt het op naam opvraagbaar voor de huidige sessie.

val df = Seq(("Alice", 30), ("Bob", 25)).toDF("name", "age")
df.createOrReplaceTempView("people")

Een SQL-query uitvoeren

Gebruik spark.sql met een SQL-tekenreeks. Dit retourneert een nieuw DataFrame dat je verder kunt transformeren of weergeven.

val adults = spark.sql("SELECT name FROM people WHERE age >= 18")
adults.show()

De DataFrame-DSL

Dezelfde query in de getypeerde DSL. Het object functions biedt col, vergelijkingen en veel ingebouwde expressies.

import org.apache.spark.sql.functions._

val adults = df.filter(col("age") >= 18).select("name")

Selecteren en aliassen geven

Projecteer kolommen met select en geef ze een nieuwe naam met as / alias. Berekende kolommen gebruiken expressies op basis van col.

import org.apache.spark.sql.functions._

df.select(
  col("name"),
  (col("age") + 1).as("age_next_year")
).show()

Rijen filteren

where en filter zijn synoniemen. Combineer voorwaarden met && en || en gebruik isNull / isNotNull voor ontbrekende gegevens.

import org.apache.spark.sql.functions._

df.where(col("age") > 20 && col("name").isNotNull).show()

Sorteren en beperken

orderBy sorteert (gebruik desc voor aflopende volgorde) en limit begrenst het aantal geretourneerde rijen.

import org.apache.spark.sql.functions._

df.orderBy(col("age").desc).limit(5).show()

Joins

Voeg twee DataFrames samen op basis van een sleutel met join. Geef het type join op, zoals "inner", "left" of "outer".

val joined = orders.join(customers, Seq("customer_id"), "inner")
joined.show()

Ingebouwde functies

Het pakket functions biedt honderden hulpfuncties: upper, concat, when, round, datumfuncties en meer.

import org.apache.spark.sql.functions._

df.withColumn("name_upper", upper(col("name")))
  .withColumn("category", when(col("age") >= 30, "senior").otherwise("junior"))
  .show()

Tabellen lezen en schrijven

Spark SQL leest en schrijft veel indelingen. Parquet is kolomgeoriënteerd en efficiënt; saveAsTable slaat gegevens op in de metastore.

val data = spark.read.parquet("input.parquet")
data.write.mode("overwrite").parquet("output.parquet")

Eenvoudige Scala-query in SQL-stijl

Een zelfstandig alternatief: een collectie in het geheugen opvragen met collectiemethoden weerspiegelt een Spark SQL SELECT/WHERE.

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(", "))
  }
}

Korte controle

Wat moet je met een DataFrame doen voordat je het kunt opvragen met spark.sql("SELECT ...")?

Samenvatting

Je hebt gegevens opgevraagd met Spark SQL:

  • weergaven registreren met createOrReplaceTempView
  • SQL uitvoeren via spark.sql of de DataFrame-DSL
  • select, where, orderBy, join
  • ingebouwde functies en Parquet-I/O

Volgende: aggregaties.

Gratis beginnen

Leer Scala met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
39
Lessen
143

Veelgestelde vragen

Is de les “Spark SQL” gratis?

Ja — de volledige tekst van “Spark SQL” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Scala voor backend-engineering en functioneel programmeren wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Scala voor backend-engineering en functioneel programmeren bevat in totaal 4 lessen.

Wat leer ik in “Spark SQL”?

Gegevens opvragen Je oefent met Scala voor backend-engineering en functioneel programmeren door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Scala voor backend-engineering en functioneel programmeren te beginnen?

Ervaring vooraf is niet nodig. Scala voor backend-engineering en functioneel programmeren op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Spark SQL”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Scala voor backend-engineering en functioneel programmeren?

Ja. Elke les over Scala voor backend-engineering en functioneel programmeren bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. RDD's en DataFrames
  2. Transformaties en acties
  3. Spark SQL
  4. Aggregaties
← Terug naar Scala voor backend-engineering en functioneel programmeren