본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
AWS Glue; 글루
데이터 탐색, 메타데이터 카탈로그, 서버리스 ETL을 한 서비스로 제공하는 AWS의 데이터 통합 서비스

AWS Glue는 여러 저장소에 흩어진 데이터를 찾아내고(크롤러), 그 구조를 한곳에 기록하고(데이터 카탈로그), 분석하기 좋은 형태로 바꿔 적재하는(ETL 작업) 일을 서버 관리 없이 처리한다. ETL 작업은 Apache Spark 기반 서버리스 엔진에서 실행되므로 클러스터를 만들 필요가 없고 실행한 만큼만 비용을 낸다. S3 데이터 레이크를 만들 때 Athena, Redshift Spectrum, EMR, Lake Formation이 모두 Glue 데이터 카탈로그를 공통으로 쓰기 때문에 SAA 시험의 분석 문제에서 거의 빠지지 않는다. 일반 개념은 ETL 문서를 참고한다.

크롤러가 데이터 카탈로그를 채우고 ETL 작업이 데이터를 변환하는 흐름

핵심 구성 요소

편집 원본 편집
구성 요소 설명
데이터 카탈로그 테이블 정의(스키마, 위치, 형식, 파티션)를 저장하는 중앙 메타데이터 저장소
크롤러 데이터 저장소에 연결해 스키마를 추론하고 카탈로그에 테이블을 만들거나 갱신
ETL 작업(job) 원본에서 데이터를 읽어 변환하고 대상에 쓰는 스크립트. Spark, Spark 스트리밍, Python 셸 작업이 있다
트리거·워크플로 일정, 이벤트, 다른 작업 완료를 조건으로 작업과 크롤러를 연쇄 실행
Glue Studio 시각적 편집기로 ETL 작업을 만들고 실행·모니터링
작업 북마크 이전 실행에서 처리한 데이터를 기억해 새 데이터만 처리
Glue DataBrew 코드 없이 데이터를 정제·정규화하는 시각적 데이터 준비 도구

AWS Glue 데이터 카탈로그

편집 원본 편집

데이터 카탈로그는 데이터 자체가 아니라 데이터에 대한 정보(메타데이터)를 담는다. S3의 어느 경로에 어떤 열을 가진 Parquet 파일이 있고 어떤 기준으로 파티션되어 있는지 같은 정보다.

  • Athena, 아마존 EMR, 아마존 Redshift Spectrum이 같은 카탈로그를 읽으므로 테이블을 한 번만 정의하면 여러 엔진에서 공유한다. Apache Hive 메타스토어를 대신하는 관리형 메타스토어 역할을 한다.
  • AWS Lake Formation은 이 카탈로그 위에서 데이터베이스·테이블·열·행 단위 권한을 관리한다.
  • 아마존 Data Firehose가 JSON을 Parquet·ORC로 변환할 때도 카탈로그의 테이블 스키마를 참조한다.

크롤러를 S3 경로, JDBC 데이터베이스, DynamoDB 테이블 같은 저장소에 지정하면, 데이터를 샘플링해 형식과 스키마를 추론하고 카탈로그에 테이블을 만든다.

  • S3 경로 구조가 year=2026/month=10/처럼 되어 있으면 이를 파티션으로 인식한다.
  • 일정에 따라 다시 실행하면 새 파티션과 스키마 변경을 반영한다.
  • 스트리밍 원본(Kinesis, Kafka)은 크롤러 대신 테이블을 직접 정의한다.

ETL 작업과 작업 북마크

편집 원본 편집
  • Glue 작업은 서버리스 Spark 환경에서 실행된다. 클러스터 크기를 미리 정하거나 패치할 필요가 없어서 정기 배치 변환에 운영 부담이 가장 적다.
  • 작업 북마크(job bookmark)는 작업 실행 상태를 저장해, 다음 실행 때 이미 처리한 파일이나 행을 다시 처리하지 않게 한다. JDBC 원본과 일부 S3 원본 형식에서 동작한다. "매시간 새로 들어온 파일만 변환" 같은 증분 처리 요구에 맞다.
  • 스트리밍 ETL 작업은 Kinesis Data Streams나 Kafka에서 데이터를 계속 읽어 변환한다.

예: CSV를 Parquet으로 변환

편집 원본 편집

SAA 시험 가이드는 ".csv에서 .parquet으로 변환"을 직접 예로 든다. Glue로 처리하는 흐름은 다음과 같다.

  1. 크롤러로 S3의 CSV 경로를 크롤링해 원본 테이블을 카탈로그에 만든다.
  2. Glue 작업에서 원본 테이블을 읽고 출력 형식을 Parquet으로 지정해 다른 S3 경로에 쓴다. 날짜 열로 파티션을 나누면 더 좋다.
  3. 출력 경로를 다시 크롤링하거나 작업에서 카탈로그를 갱신하면 Athena에서 바로 조회할 수 있다.
import sys
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext

args = getResolvedOptions(sys.argv, ["JOB_NAME"])
glue = GlueContext(SparkContext.getOrCreate())
job = Job(glue)
job.init(args["JOB_NAME"], args)

src = glue.create_dynamic_frame.from_catalog(
    database="sales", table_name="orders_csv",
    transformation_ctx="src")  # 작업 북마크가 이 이름으로 상태를 기록한다

glue.write_dynamic_frame.from_options(
    frame=src, connection_type="s3", format="parquet",
    connection_options={"path": "s3://amzn-s3-demo-bucket/orders_parquet/",
                        "partitionKeys": ["order_date"]})
job.commit()

아파치 파케이 같은 열 형식은 필요한 열만 읽으므로 Athena가 스캔하는 데이터량, 곧 쿼리 비용이 크게 줄어든다.

분석가나 데이터 과학자가 코드를 쓰지 않고 데이터를 정제·정규화하는 시각적 도구다. 250개가 넘는 기본 변환(널 제거, 결측값 대체, 스키마 불일치 수정 등)을 클릭으로 적용하고, 변환 단계를 레시피로 저장해 반복 실행한다. 결과는 S3에 저장된다. 시험에서는 "코드 없이 데이터 정제"라는 단서가 나오면 DataBrew를 떠올린다.

다른 서비스와 비교

편집 원본 편집
요구 적합한 서비스
서버리스로 정기 배치 ETL, 운영 최소 AWS Glue 작업
Spark·Hive·Presto 등 오픈 소스 프레임워크를 세밀하게 조정, 대규모 장기 실행 클러스터 아마존 EMR
스트리밍 데이터를 형식 변환만 해서 S3로 적재 아마존 Data Firehose
코드 없는 시각적 데이터 정제 Glue DataBrew
S3 데이터에 바로 SQL 조회 아마존 아테나(카탈로그는 Glue)
  • "S3 데이터의 스키마를 자동으로 파악해 Athena에서 조회"는 Glue 크롤러 + 데이터 카탈로그 + Athena 조합이다.
  • "CSV·JSON을 Parquet으로 변환해 쿼리 비용 절감, 서버 관리 최소"는 Glue ETL 작업이다.
  • "새로 들어온 데이터만 처리, 중복 처리 방지"는 작업 북마크다.
  • Athena, Redshift Spectrum, EMR이 공유하는 메타스토어는 Glue 데이터 카탈로그라는 점을 기억한다.
  • Spark 클러스터를 직접 세밀하게 제어해야 하거나 Hadoop 생태계 도구가 필요하면 Glue보다 EMR이다.