-
[Glue] Session / Context 개념 정리클라우드/Data Engineering 2025. 10. 11. 16:37
1. SparkSession (스파크 세션)
- 실제 일을 하는 엔진
- df.filter(), df.join(), df.write() 같은 DataFrame 연산을 하면, 이걸 실제로 실행하고 계산하는 게 SparkSession
- 즉, Spark 안에서 데이터를 불러오고, 처리하고, 저장하는 모든 핵심 동작의 중심
- Glue에서도 결국 SparkSession이 실제 연산을 수행
2. GlueContext (글루 컨텍스트)
- AWS Glue용 Spark 관리 도우미
- AWS Glue Job에서 Spark를 더 쉽게 쓸 수 있도록 Glue 전용 도구를 제공합
- 예를 들어:
- create_dynamic_frame.from_catalog() → Glue Data Catalog에서 데이터 불러오기
- write_dynamic_frame.from_options() → S3, Redshift 등으로 저장
- Glue 환경에서는 SparkSession을 직접 쓰기보다는, GlueContext를 통해 Glue 전용 기능과 Spark를 같이 다룸
3. SparkContext (스파크 컨텍스트)
- 클러스터 관리자
- Spark 클러스터(= 여러 노드들)를 제어하고, 노드별로 작업을 분배함
- SparkSession도 내부적으로 SparkContext를 사용
- 즉, SparkContext는 SparkSession의 “하위 엔진”이에요.
SparkSession DataFrame 연산 엔진 Glue 내부의 Spark 엔진 요리사 GlueContext AWS Glue 전용 기능 관리 Glue Job의 Wrapper 매니저 SparkContext 클러스터 제어 및 Job 분배 SparkSession 내부 엔진 주방 관리자 4. DataFrame vs DynamicFrame?
제공 주체 Apache Spark AWS Glue 전용 데이터 구조 고정된 스키마 (엄격함) 유연한 스키마 (자동 처리) 변환 시 장점 연산 속도 빠름, Spark 함수 다양 스키마 오류에 강함, JSON·S3 등 불완전 데이터 처리 유리 변환 가능 여부 DynamicFrame → DataFrame / DataFrame → DynamicFrame 상호 변환 가능 O (toDF() / fromDF()) 주 사용 목적 복잡한 연산, ML, SQL 쿼리 등 Spark 처리 Glue ETL Job 내 데이터 변환 및 정제 예시 함수 .filter(), .groupBy(), .join() 등 .apply_mapping(), .resolveChoice() 등 - DataFrame
-> Spark의 기본 데이터 구조로, 스키마 (컬럼 이름 + 타입)이 고정되어 있음
-> 한번 정의된 스키마에 안 맞는 데이터가 들어오면 에러가 발생함
-> 속도가 빠르고 Spark SQL을 그대로 쓸 수 있음
df = spark.read.parquet("s3://bucket/path/") df.filter(df.age > 20).select("name", "age").show()- DynamicFrame
-> Glue에서만 제공하는 특수한 구조
-> 스키마가 유연해서 컬럼이 없거나 타입이 다른 데이터를 자동으로 정리해줌
-> CSV, JSON, Parquet 등 형식이 섞인 데이터를 읽을 때 매우 편리
-> Spark DataFrame보다 속도는 약간 느릴 수 있음
dyf = glueContext.create_dynamic_frame.from_catalog( database="mydb", table_name="mytable" ) dyf = dyf.resolveChoice(specs=[("age", "cast:int")])
- 실제 사용 예시
# DynamicFrame → DataFrame : df = dyf.toDF()# DataFrame → DynamicFrame : dyf = DynamicFrame.fromDF(df, glueContext, "convert_df")- 읽기/쓰기 (S3, Glue Catalog 등): DynamicFrame
- 가공/집계 (filter, join, groupBy 등): DataFrame
- 저장 (S3, Redshift 등): 다시 DynamicFrame으로 변환
'클라우드 > Data Engineering' 카테고리의 다른 글
[Glue] 데이터 처리 개념 정리 (0) 2025.10.11 [Glue] Glue 옵션 파헤치기 (0) 2025.08.12 - 예를 들어: