0Pricing
Scala for Backend Engineering & Functional Programming · Lekcja

Spark SQL

Odpytywanie danych

Spark SQL to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.

Czym jest Spark SQL?

Spark SQL umożliwia odpytywanie rozproszonych danych za pomocą standardowego języka SQL lub typowanego API DataFrame. Oba podejścia korzystają z tego samego optymalizatora Catalyst, dlatego działają identycznie wydajnie.

Widoki tymczasowe

Aby wykonywać zapytania SQL względem DataFrame, należy zarejestrować go jako widok. createOrReplaceTempView udostępnia go pod nazwą w bieżącej sesji.

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

Wykonywanie zapytania SQL

Użyj spark.sql z tekstem zapytania SQL. Zwraca ono nowy DataFrame, który można dalej transformować lub wyświetlać.

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

DSL DataFrame

To samo zapytanie w typowanym DSL. Obiekt functions udostępnia col, operatory porównań i wiele wbudowanych wyrażeń.

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

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

Wybieranie i nadawanie aliasów

Wybieraj kolumny za pomocą select, a zmieniaj ich nazwy za pomocą as / alias. Kolumny wyliczane korzystają z wyrażeń opartych na col.

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

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

Filtrowanie wierszy

where i filter to synonimy. Łącz warunki za pomocą && i ||, a do obsługi brakujących danych używaj isNull / isNotNull.

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

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

Sortowanie i ograniczanie wyników

orderBy sortuje dane (użyj desc do sortowania malejącego), a limit ogranicza liczbę zwracanych wierszy.

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

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

Złączenia

Połącz dwa obiekty DataFrame według klucza za pomocą join. Określ typ złączenia, na przykład "inner", "left" lub "outer".

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

Wbudowane funkcje

Pakiet functions oferuje setki funkcji pomocniczych: upper, concat, when, round, funkcje dat i wiele innych.

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

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

Odczytywanie i zapisywanie tabel

Spark SQL odczytuje i zapisuje dane w wielu formatach. Parquet jest formatem kolumnowym i wydajnym; saveAsTable zapisuje dane w metastore.

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

Proste zapytanie w stylu SQL w Scali

Samodzielny odpowiednik: odpytywanie kolekcji w pamięci za pomocą metod kolekcji odwzorowuje operacje SELECT/WHERE w 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(", "))
  }
}

Szybkie sprawdzenie

Co należy zrobić z DataFrame przed odpytywaniem go za pomocą spark.sql("SELECT ...")?

Podsumowanie

Uczestnik odpytywał dane za pomocą Spark SQL:

  • rejestrowanie widoków za pomocą createOrReplaceTempView
  • wykonywanie SQL za pomocą spark.sql lub DSL DataFrame
  • select, where, orderBy, join
  • wbudowane funkcje i operacje wejścia-wyjścia z użyciem Parquet

Następnie: agregacje.

Często zadawane pytania

Czy lekcja „Spark SQL” jest bezpłatna?

Tak — pełny tekst „Spark SQL” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.

Co nauczysz się w „Spark SQL”?

Odpytywanie danych Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?

Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Spark SQL”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?

Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. RDD i DataFrame’y
  2. Przekształcenia i akcje
  3. Spark SQL
  4. Agregacje
← Powrót do Scala for Backend Engineering & Functional Programming