0Pricing
Cloud & IT Cert Prep · 강의

AWS Glue: ETL 및 데이터 카탈로그

AWS Glue로 서버리스 ETL 작업을 실행하고, Glue Data Catalog에 테이블 스키마를 등록하며, 새 데이터를 자동으로 크롤링합니다.

AWS Glue: ETL 및 데이터 카탈로그은(는) CoddyKit의 무료 Cloud & IT Cert Prep 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cloud & IT Cert Prep 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

AWS Glue란 무엇입니까

AWS Glue는 완전 관리형 서버리스 ETL(Extract, Transform, Load) 서비스입니다. 서버를 프로비저닝하거나 관리할 필요 없이 작업이 실행될 때 Glue가 Spark 또는 Python 작업자를 자동으로 할당합니다. Glue는 두 가지 주요 구성 요소로 이루어집니다. 하나는 데이터 변환 작업을 수행하는 ETL 엔진이고, 다른 하나는 데이터 소스와 대상에 대한 메타데이터를 저장하는 Data Catalogue입니다.

Glue Data Catalogue 설명

Glue Data Catalogue는 Apache Hive Metastore와 호환되는 중앙 집중식 메타데이터 저장소입니다. 데이터베이스, 테이블, 열 정의, 데이터 형식, 파티션 정보를 저장합니다. Athena, Redshift Spectrum, EMR과 같은 서비스가 모두 동일한 Data Catalogue를 사용하므로, S3에 어떤 데이터가 존재하고 어디에 저장되어 있는지에 대한 단일 기준이 됩니다.

# List databases in the Glue Data Catalogue
aws glue get-databases --query 'DatabaseList[*].Name'

# List tables in a database
aws glue get-tables --database-name my_db --query 'TableList[*].Name'

Glue Crawler: 스키마 자동 검색

Glue Crawler는 데이터 저장소(S3, JDBC, DynamoDB)에 연결하여 데이터를 샘플링하고 스키마와 파티션 구조를 자동으로 추론합니다. 그런 다음 Data Catalogue의 테이블 정의를 생성하거나 업데이트합니다. Crawler는 일정에 따라 실행하거나 필요할 때 실행할 수 있습니다. 또한 증분 크롤링을 지원하므로 이후 실행에서는 새 파티션만 처리합니다.

# Create and start a Glue Crawler via CLI
aws glue create-crawler \
  --name sales-crawler \
  --role arn:aws:iam::123456789012:role/GlueRole \
  --database-name my_db \
  --targets '{"S3Targets": [{"Path": "s3://my-data-lake-123/landing/sales/"}]}'

aws glue start-crawler --name sales-crawler

Glue ETL 작업 작성

Glue ETL 작업은 소스에서 데이터를 읽고 DynamicFrame API를 사용하여 변환을 적용한 후 대상에 기록하는 PySpark 또는 Scala Spark 스크립트입니다. DynamicFrames는 스키마 유연성을 추가한 Spark DataFrames로, 일관되지 않은 데이터 형식과 중첩된 JSON을 자동으로 처리합니다. Glue Studio 시각적 편집기에서 기본 작업 스크립트를 생성할 수도 있습니다.

# Minimal Glue PySpark ETL job
from awsglue.context import GlueContext
from awsglue.transforms import *
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)

# Read from Data Catalogue table
source = glueContext.create_dynamic_frame.from_catalog(
    database='my_db', table_name='raw_sales')

# Drop null order_id rows
cleaned = Filter.apply(frame=source, f=lambda r: r['order_id'] is not None)

# Write Parquet to curated zone
glueContext.write_dynamic_frame.from_options(
    frame=cleaned,
    connection_type='s3',
    connection_options={'path': 's3://my-data-lake-123/curated/sales/'},
    format='parquet')

Glue 작업자와 DPU

Glue는 Data Processing Units (DPUs) 단위로 용량을 할당합니다. DPU 하나는 vCPU 4개와 메모리 16GB에 해당합니다. 작업자 유형(G.1X, G.2X, 또는 유연한 처리/스트리밍용 G.025X)과 작업자 수를 선택합니다. 소규모 작업에는 단일 DPU의 4분의 1을 사용하는 G.025X Python Shell 작업 유형이 적합하며, 간단한 변환을 비용 효율적으로 처리할 수 있습니다.

# Create a Glue job with G.1X workers
aws glue create-job \
  --name clean-sales \
  --role arn:aws:iam::123456789012:role/GlueRole \
  --command '{"Name": "glueetl", "ScriptLocation": "s3://scripts/clean_sales.py", "PythonVersion": "3"}' \
  --worker-type G.1X \
  --number-of-workers 5 \
  --glue-version '4.0'

Glue 워크플로 및 트리거

Glue Workflow는 Crawler와 작업을 종속성 그래프로 연결합니다. Crawler가 새 데이터를 검색하면 완료 시 작업을 시작하고, 해당 작업이 다시 다른 작업을 시작하는 방식으로 이어집니다. Triggers는 예약 방식(cron), 이벤트 기반 방식(필요 시 실행), 조건부 방식(작업 성공 또는 실패 시 실행)으로 구성할 수 있습니다. 워크플로를 사용하면 별도의 오케스트레이션 서비스 없이 ETL 파이프라인을 위한 시각적 DAG를 만들 수 있습니다.

# Create a schedule trigger that starts a job every night at 2 AM UTC
aws glue create-trigger \
  --name nightly-clean \
  --type SCHEDULED \
  --schedule 'cron(0 2 * * ? *)' \
  --actions '[{"JobName": "clean-sales"}]' \
  --start-on-creation

Glue Studio: 시각적 ETL 빌더

Glue Studio는 PySpark 코드를 직접 작성하지 않고도 드래그 앤 드롭 방식으로 ETL 작업을 그래픽으로 설계할 수 있는 인터페이스를 제공합니다. 소스 노드(S3, Catalogue 테이블, JDBC)를 변환 노드(필터, 조인, 집계, 사용자 지정 Python)를 거쳐 대상 노드에 연결합니다. Glue Studio가 Spark 스크립트를 자동으로 생성합니다. 또한 실행 상태와 데이터 품질 지표를 모니터링할 수 있는 작업 실행 대시보드도 제공합니다.

Glue Data Quality

AWS Glue Data Quality(DQDL — Data Quality Definition Language)를 사용하면 ETL 작업을 통해 데이터가 흐르는 동안 데이터의 유효성을 검사하는 규칙을 작성할 수 있습니다. 규칙으로 null 비율, 값의 범위, 참조 무결성, 고유성을 확인할 수 있습니다. 데이터가 품질 규칙을 통과하지 못하면 Glue가 작업을 중단하거나 잘못된 레코드를 S3의 격리 경로로 보내 수동 검토를 수행하게 할 수 있습니다. 따라서 손상된 데이터가 조용히 Curated Zone으로 전달되는 것을 방지할 수 있습니다.

# DQDL rule example for Glue Data Quality
# Reject rows where order_total is negative or null
Rules = [
  IsComplete 'order_total',
  ColumnValues 'order_total' >= 0
]

Glue와 다른 ETL 옵션 비교

SAA-C03 시험에서는 Glue를 대안 서비스 대신 언제 권장해야 하는지 알아야 합니다. 서버리스 Spark ETL과 Data Catalogue 통합에는 Glue를 사용하십시오. 오래된 데이터 이동 작업(대부분 레거시)의 오케스트레이션에는 AWS Data Pipeline을 사용하십시오. 사용자 지정 Hadoop/Spark 클러스터 구성이 필요하거나 장시간 실행되는 워크로드에는 Amazon EMR을 사용하십시오. 작은 페이로드에 대한 가벼운 이벤트 기반 마이크로 변환에는 Lambda를 사용하십시오.

JDBC 및 S3가 아닌 데이터 소스

Glue는 JDBC 연결을 통해 관계형 데이터베이스에 연결할 수 있습니다. RDS, Aurora, Redshift 또는 Glue VPC Connection을 통한 온프레미스 데이터베이스가 이에 해당합니다. JDBC URL, Secrets Manager의 자격 증명, VPC 보안 그룹으로 연결을 정의합니다. 그러면 Glue가 VPC 서브넷 내부에 배치된 전용 네트워크 인터페이스를 사용하여 퍼블릭 인터넷을 거치지 않고 비공개 데이터베이스 엔드포인트에 연결합니다.

# Create a Glue JDBC connection to RDS Aurora
aws glue create-connection \
  --connection-input '{
    "Name": "aurora-prod",
    "ConnectionType": "JDBC",
    "ConnectionProperties": {
      "JDBC_CONNECTION_URL": "jdbc:mysql://aurora-cluster.cluster-xyz.us-east-1.rds.amazonaws.com:3306/sales",
      "SECRET_ID": "arn:aws:secretsmanager:us-east-1:123:secret:rds-creds"
    },
    "PhysicalConnectionRequirements": {
      "SubnetId": "subnet-abc123",
      "SecurityGroupIdList": ["sg-xyz456"],
      "AvailabilityZone": "us-east-1a"
    }
  }'

북마크: 증분 처리

기본적으로 Glue 작업은 실행할 때마다 모든 레코드를 다시 처리합니다. Glue Job Bookmarks는 이미 처리한 입력 파일을 추적하므로 이후 실행에서는 새 데이터만 가져옵니다. 북마크는 동일한 접두사에 매일 새 파일이 추가되는 S3 추가 전용 소스에서 필수적입니다. --job-bookmark-option job-bookmark-enable을 작업 매개 변수에 지정하여 북마크를 활성화하십시오.

# Start Glue job with bookmark enabled
aws glue start-job-run \
  --job-name clean-sales \
  --arguments '{"--job-bookmark-option": "job-bookmark-enable"}'

빠른 확인

이 레슨에서 다룬 AWS Solutions Architect (SAA-C03) 개념을 제대로 이해했는지 확인해 보세요.

레슨 요약

이 레슨에서는 AWS Glue가 PySpark와 DynamicFrame API를 통해 서버리스 ETL을 제공한다는 점, Glue Crawler가 스키마를 자동으로 검색하고 Data Catalogue를 채운다는 점, Glue Bookmark가 S3에 새로 추가된 데이터를 증분 처리할 수 있게 한다는 점을 배웠습니다. 다음으로는 S3에서 직접 서버리스 SQL 쿼리를 실행할 수 있는 Amazon Athena를 살펴보겠습니다.

자주 묻는 질문

“AWS Glue: ETL 및 데이터 카탈로그” 강의는 무료인가요?

네 — “AWS Glue: ETL 및 데이터 카탈로그” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cloud & IT Cert Prep 강의 전체를 잠금 해제할 수 있습니다. Cloud & IT Cert Prep 강의에는 총 4개의 강의가 포함되어 있습니다.

“AWS Glue: ETL 및 데이터 카탈로그”에서 뭘 배우나요?

AWS Glue로 서버리스 ETL 작업을 실행하고, Glue Data Catalog에 테이블 스키마를 등록하며, 새 데이터를 자동으로 크롤링합니다. 브라우저에서 직접 실행하는 실습 코드로 Cloud & IT Cert Prep을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Cloud & IT Cert Prep을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Cloud & IT Cert Prep은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“AWS Glue: ETL 및 데이터 카탈로그” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Cloud & IT Cert Prep 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Cloud & IT Cert Prep 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. S3에서 데이터 레이크 구축
  2. AWS Glue: ETL 및 데이터 카탈로그
  3. Amazon Athena: S3의 서버리스 SQL
  4. Kinesis Streams, Firehose 및 실시간 분석
← Cloud & IT Cert Prep(으)로 돌아가기