[Spark] 3. Spark SQL

2024. 12. 2. 23:53·데이터/Spark

Spark SQL

  • 구조화된 데이터 처리를 위한 Spark 모듈
  • DataFrame 작업을 SQL로 처리 가능
    • DataFrame에 테이블 명 지정 후 SQL 함수 사용 가능
      • pandas에도 pandasql 모듈의 sqldf 함수를 이용하는 동일한 패턴 존재
    • HQL(Hive Query Language)과 호환 제공
      • Hive 테이블을 읽고 쓸 수 있음 (Hive Metastore)

Spark SQL vs. DataFrame

  • SQL로 가능한 작업은 굳이 DataFrame을 사용할 이유 X!
    • 두 기술을 혼합해서 사용 가능!
  • Spark SQL이 갖는 장점
    • 가독성과 사용 친화성
    • Spark SQL 엔진이 최적화에 유리!
    • DataFrame에 비해 포팅이 쉽고 접근 권한 체크도 유리!

Spark SQL 사용법

namegender_df.createOrReplaceTempView("namegender") namegender_group_df = spark.sql("""
SELECT gender, count(1) FROM namegender GROUP BY 1 """)
print(namegender_group_df.collect())
  • DataFrame을 기반으로 테이블 뷰 생성
    • createOrReplaceTempView : Spark Session이 살아있는 동안 존재
    • createOrReplaceGlobalTempView : Spark 드라이버가 살아있는 동안 존재
  • Spark Session의 sql 함수로 SQL 결과를 DataFrame으로 받음

Spark Session 사용 외부 데이터베이스 연결

  • Spark Session의 read 함수 호출
  • 결과를 데이터 프레임으로 리턴
  • 예시
df_user_session_channel = spark.read \
.format("jdbc") \
.option("driver", "com.amazon.redshift.Driver") \
.option("url", "jdbc:redshift://HOST:PORT/DB?user=ID&password=PASSWORD") \ .option("dbtable", "raw_data.user_session_channel") \
.load()
저작자표시 (새창열림)

'데이터 > Spark' 카테고리의 다른 글

[Spark] 6. Spark Execution Plan  (1) 2024.12.03
[Spark] 5. File Format  (0) 2024.12.03
[Spark] 4. Database & Table  (2) 2024.12.03
[Spark] 2. Spark Session  (0) 2024.12.02
[Spark] 1. Spark?  (2) 2024.11.28
'데이터/Spark' 카테고리의 다른 글
  • [Spark] 5. File Format
  • [Spark] 4. Database & Table
  • [Spark] 2. Spark Session
  • [Spark] 1. Spark?
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부트캠프
    cloud
    데이터 엔지니어
    파이썬
    프로그래밍
    Airflow
    Java
    데브코스
    TiL
    에어플로우
    데이터 엔지니어링 데브코스 4기
    초보개발자
    aws
    자바
    Python
    오블완
    Azure
    티스토리챌린지
    데이터 엔지니어링 데브코스
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[Spark] 3. Spark SQL
상단으로

티스토리툴바