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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- RDD와 DataFrames
- 변환과 액션
- Spark SQL
- 집계