본문 바로가기
IT_Engineer/DataEngineer

[DE] 데이터 엔지니어를 위한 AWS#3 Glue: ETL 작업 자동화하기

by 좋은데이피치 2024. 11. 24.
728x90

1. AWS Glue란?

AWS Glue는 완전관리형 ETL(Extract, Transform, Load) 서비스로, 데이터 준비 및 통합을 단순화합니다.
주요 특징:

  • 서버리스: 인프라 관리 불필요
  • 자동화: 데이터 카탈로그 생성 및 작업 스케줄링
  • 확장성: 대규모 데이터 처리 가능

2. 시나리오

RDS와 S3에 분산된 원본 데이터를 Glue를 통해 통합 및 변환하여 분석용 S3 버킷에 저장한다고 가정합니다.

프로세스:

  1. RDS에서 사용자 데이터를 읽어옵니다.
  2. S3에 저장된 추가 데이터와 결합합니다.
  3. 데이터 정제 및 변환 작업을 수행합니다.
  4. 처리 결과를 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. 최적화 팁

  1. 작업 크기 조정: Glue 워크플로를 분석하고 적절한 DPU(Data Processing Units)를 선택하세요.
  2. 데이터 포맷: Parquet이나 ORC 같은 최적화된 포맷을 사용해 성능을 향상시키세요.
  3. Glue Workflows: 여러 Glue 작업을 하나의 워크플로로 연결해 데이터 파이프라인을 자동화하세요.

다음 글 예고
다음 글에서는 Glue WorkflowsStep Functions를 조합해 더 복잡한 데이터 파이프라인을 설계하는 방법을 소개합니다.

Tip: Glue의 강력한 기능을 활용하면 데이터 엔지니어링 업무를 혁신할 수 있습니다. 이 시리즈로 실력을 키워보세요! 😊

728x90

최근댓글

최근글