AWS

AWS Glue 란?

박쿠리 2025. 9. 8. 20:33

1. AWS Glue란?

AWS Glue는 AWS에서 제공하는 서버리스(서버 관리 불필요) 데이터 통합 서비스.
데이터를 탐색(Discover) → 준비(Prepare) → 변환(Transform) → 적재(Load) 하는 과정을 자동화하여 ETL(Extract, Transform, Load) 작업을 쉽게 할 수 있도록 지원한다.

 

주요 특징:

  • 서버리스: 인프라 관리 필요 없음
  • 자동화: 데이터 카탈로그 생성 및 스키마 추론
  • 유연성: Spark 기반(분산 처리 가능)
  • 통합: S3, RDS, Redshift, DynamoDB 등과 원활하게 연동

즉, Glue는 데이터 엔지니어가 복잡한 ETL 파이프라인을 쉽고 빠르게 구성하도록 돕는 서비스.


2. 아키텍처 개념도

        ┌───────────────────┐
        │    데이터 소스     │ (S3, RDS, DynamoDB 등)
        └─────────┬─────────┘
                  │
                  ▼
          ┌───────────────┐
          │ Glue Crawler  │ → 메타데이터 추출 (스키마 자동 생성)
          └───────────────┘
                  │
                  ▼
          ┌───────────────┐
          │ Glue Catalog  │ → 데이터베이스/테이블 메타데이터 저장
          └───────────────┘
                  │
                  ▼
          ┌───────────────┐
          │ Glue Job      │ → ETL 코드(PySpark) 실행
          └───────────────┘
                  │
                  ▼
        ┌───────────────────┐
        │   대상 저장소      │ (S3, Redshift, RDS 등)
        └───────────────────┘

 

3. 주요 컴포넌트

  1. Crawler
    • 데이터 소스를 자동으로 스캔해 스키마를 추론하고 Glue Catalog에 테이블 생성.
  2. Data Catalog
    • Glue의 핵심 메타데이터 저장소.
    • 테이블, 스키마, 위치 정보를 저장. Athena, Redshift Spectrum 등에서도 활용 가능.
  3. Job
    • ETL 실행 단위.
    • PySpark 기반 코드 자동 생성 가능.
  4. Trigger
    • 스케줄링 혹은 이벤트 기반 실행을 지원.

4. Glue Notebook 실행 예제

S3 -> 변환 -> S3 파이프라인의 예제.

from awsglue.context import GlueContext
from pyspark.context import SparkContext

# GlueContext 생성
sc = SparkContext.getOrCreate()
glueContext = GlueContext(sc)
spark = glueContext.spark_session

# S3에서 데이터 읽기
datasource = glueContext.create_dynamic_frame.from_options(
    connection_type="s3",
    connection_options={"paths": ["s3://my-bucket/input/"]},
    format="csv",
    format_options={"withHeader": True}
)

# 변환 예시: 컬럼 매핑
transformed = datasource.apply_mapping([
    ("id", "string", "user_id", "string"),
    ("name", "string", "user_name", "string"),
    ("age", "string", "user_age", "int")
])

# 결과 확인 (Notebook은 display() 가능)
transformed.show()

# 변환된 데이터를 다시 S3에 저장
glueContext.write_dynamic_frame.from_options(
    frame=transformed,
    connection_type="s3",
    connection_options={"path": "s3://my-bucket/output/"},
    format="parquet"
)

 

5. 실무 활용 시나리오

  • 데이터 레이크 구축: S3에 저장된 다양한 원천 데이터를 카탈로그화 후 Athena/Redshift로 분석
  • ETL 파이프라인 자동화: 매일 크롤링된 로그 데이터를 정제하여 S3/Redshift에 적재
  • 서버리스 데이터 엔지니어링: Spark 클러스터 관리 부담 없이 대규모 데이터 처리
반응형

'AWS' 카테고리의 다른 글

AWS 네트워크 인프라 구축 정리  (0) 2025.09.09
AWS Redshift란?  (0) 2025.09.08