728x90
1. AWS Glue란?
AWS Glue는 완전관리형 ETL(Extract, Transform, Load) 서비스로, 데이터 준비 및 통합을 단순화합니다.
주요 특징:
- 서버리스: 인프라 관리 불필요
- 자동화: 데이터 카탈로그 생성 및 작업 스케줄링
- 확장성: 대규모 데이터 처리 가능
2. 시나리오
RDS와 S3에 분산된 원본 데이터를 Glue를 통해 통합 및 변환하여 분석용 S3 버킷에 저장한다고 가정합니다.
프로세스:
- RDS에서 사용자 데이터를 읽어옵니다.
- S3에 저장된 추가 데이터와 결합합니다.
- 데이터 정제 및 변환 작업을 수행합니다.
- 처리 결과를 S3에 저장합니다.
3. AWS Glue 구성
1) 데이터 카탈로그 생성
Glue 데이터 카탈로그는 데이터 소스의 메타데이터를 관리합니다.
- AWS 콘솔에서 Glue > 데이터 카탈로그로 이동
- RDS와 S3를 크롤링하여 스키마를 자동 생성
2) Glue ETL 작업 생성
Glue 작업(Job)은 ETL 코드를 실행합니다.
- Glue Studio에서 새 작업 생성
- Python 또는 Spark SQL을 활용해 데이터 처리 로직 작성
4. Glue ETL 코드 예제
PySpark 코드:
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
# Glue 컨텍스트 생성
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = glueContext.create_job()
# RDS 데이터 로드
rds_dynamic_frame = glueContext.create_dynamic_frame.from_catalog(
database="your_database",
table_name="your_rds_table"
)
# S3 데이터 로드
s3_dynamic_frame = glueContext.create_dynamic_frame.from_catalog(
database="your_database",
table_name="your_s3_table"
)
# 데이터 병합
merged_frame = rds_dynamic_frame.union(s3_dynamic_frame)
# 데이터 변환 (예: null 값 제거)
transformed_frame = merged_frame.resolveChoice(specs=[("column_name", "make_struct")]).drop_nulls()
# 결과를 S3에 저장
output_path = "s3://your-output-bucket/processed/"
glueContext.write_dynamic_frame.from_options(
frame=transformed_frame,
connection_type="s3",
connection_options={"path": output_path},
format="parquet"
)
job.commit()
5. Glue 작업 실행 및 결과 확인
1) 작업 실행
- AWS 콘솔에서 Glue 작업을 시작합니다.
- 처리 로그를 CloudWatch에서 모니터링하세요.
2) 결과 확인
- S3의 processed/ 경로에서 처리된 데이터를 확인합니다.
- 데이터가 파케이(Parquet) 형식으로 저장됩니다.
6. 시각적 자료
- 데이터 카탈로그 설정 화면 캡처
- Glue Studio에서 작업 구성 화면
- CloudWatch 로그 확인 화면
7. 최적화 팁
- 작업 크기 조정: Glue 워크플로를 분석하고 적절한 DPU(Data Processing Units)를 선택하세요.
- 데이터 포맷: Parquet이나 ORC 같은 최적화된 포맷을 사용해 성능을 향상시키세요.
- Glue Workflows: 여러 Glue 작업을 하나의 워크플로로 연결해 데이터 파이프라인을 자동화하세요.
다음 글 예고
다음 글에서는 Glue Workflows와 Step Functions를 조합해 더 복잡한 데이터 파이프라인을 설계하는 방법을 소개합니다.
Tip: Glue의 강력한 기능을 활용하면 데이터 엔지니어링 업무를 혁신할 수 있습니다. 이 시리즈로 실력을 키워보세요! 😊
728x90
'IT_Engineer > DataEngineer' 카테고리의 다른 글
[DE] 에어플로우 DAG 최적화와 모니터링 기법 (0) | 2024.11.21 |
---|---|
[DE] Spark + Airflow #2: Airflow와 Spark를 활용한 데이터 처리 파이프라인 완성하기 (3) | 2024.11.20 |
[DE] Spark + Airflow #1: Spark on Kubernetes 구현하기 (0) | 2024.11.19 |
[DE] 데이터 엔지니어를 위한 AWS#2 Lambda: S3 이벤트 기반 파일 처리 자동화 (2) | 2024.11.18 |
[DE] 데이터 엔지니어를 위한 AWS 입문#1 : AWS 기초와 S3 사용법 (0) | 2024.11.17 |