0Pricing
Scala for Backend Engineering & Functional Programming · 강의

Spark SQL

데이터를 조회합니다

Spark SQL은(는) CoddyKit의 무료 Scala for Backend Engineering & Functional Programming 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Scala for Backend Engineering & Functional Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.

Spark SQL이란?

Spark SQL을 사용하면 표준 SQL 또는 타입이 지정된 DataFrame API로 분산 데이터를 조회할 수 있습니다. 두 방식 모두 동일한 Catalyst 최적화 프로그램을 거치므로 성능도 동일합니다.

임시 뷰

DataFrame을 대상으로 SQL을 실행하려면 뷰로 등록해야 합니다. createOrReplaceTempView를 사용하면 현재 세션에서 이름으로 조회할 수 있습니다.

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

SQL 쿼리 실행

SQL 문자열과 함께 spark.sql을 사용합니다. 그러면 추가로 변환하거나 표시할 수 있는 새 DataFrame이 반환됩니다.

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

DataFrame DSL

타입이 지정된 DSL로 동일한 쿼리를 작성할 수 있습니다. functions 객체는 col, 비교 연산 및 다양한 기본 제공 표현식을 제공합니다.

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

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

열 선택과 별칭 지정

select로 열을 선택하고 as / alias로 이름을 바꿉니다. 계산된 열에는 col을 사용하는 표현식을 적용합니다.

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

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

행 필터링

where와 filter는 동의어입니다. &&와 ||로 조건을 결합하고, 누락된 데이터에는 isNull / isNotNull을 사용합니다.

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

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

정렬과 제한

orderBy는 정렬을 수행하며(내림차순에는 desc 사용), limit은 반환되는 행 수를 제한합니다.

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

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

조인

join을 사용해 키를 기준으로 두 DataFrame을 조인합니다. "inner", "left", "outer"와 같은 조인 유형을 지정합니다.

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

기본 제공 함수

functions 패키지는 upper, concat, when, round, 날짜 함수 등 수백 가지 도우미를 제공합니다.

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

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

테이블 읽기와 쓰기

Spark SQL은 다양한 형식을 읽고 쓸 수 있습니다. Parquet은 열 기반 형식이라 효율적이며, saveAsTable은 메타스토어에 저장합니다.

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

순수 Scala의 SQL 유사 쿼리

독립적으로 실행할 수 있는 예시입니다. 메모리 내 컬렉션을 컬렉션 메서드로 조회하는 방식은 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(", "))
  }
}

빠른 확인

spark.sql("SELECT ...")로 조회하기 전에 DataFrame에 어떤 작업을 해야 할까요?

복습

Spark SQL로 데이터를 조회했습니다:

  • createOrReplaceTempView로 뷰 등록
  • spark.sql 또는 DataFrame DSL로 SQL 실행
  • select, where, orderBy, join
  • 기본 제공 함수와 Parquet 입출력

다음 주제: 집계

자주 묻는 질문

“Spark SQL” 강의는 무료인가요?

네 — “Spark SQL” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.

“Spark SQL”에서 뭘 배우나요?

데이터를 조회합니다 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“Spark SQL” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. RDD와 DataFrames
  2. 변환과 액션
  3. Spark SQL
  4. 집계
← Scala for Backend Engineering & Functional Programming(으)로 돌아가기