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