Search

Glue

대분류
DevOps/Tool
소분류
AWS
유형
완전 관리형 ETL 서비스
주요 레퍼런스
https://dev-records.tistory.com/entry/AWS-Glue%EB%9E%80
https://www.smileshark.kr/post/how-to-etl-with-aws-glue-and-aws-glue-studio
https://tech.cloud.nongshim.co.kr/blog/aws/1703/
속성
데이터 서비스
최종 편집 일시
2024/10/31 05:21
생성 일시
2024/09/28 00:44
13 more properties

Glue

완전 관리형 ETL(Extract, Transform, Load) 서비스
ETL : Extract(추출), Transform(변환), Load(로드)의 약자 데이터를 추출하고, 필요한 형식으로 변환한 후, 데이터 웨어하우스 또는 분석 시스템과 같은 시스템으로 로드하는 과정
사용자와 워크로드를 지원하기 위한 여러 데이터 통합 엔진을 제공하는 서버리스 데이터 통합 서비스
워크로드의 특성과 개발자 및 애널리스트의 선호도를 기준으로 모든 워크로드에 맞는 적절한 엔진을 사용할 수 있다.
데이터 스토어 및 데이터 스트림 간에 원하는 데이터를 분류, 정리, 보강, 이동할 수 있다.
AWS Glue에서는 Script를 Visualizing 하여 설정이 편하고 쉽다.
또한 AWS 서비스이기에 다른 AWS 서비스와의 연동성도 뛰어나며 S3, RDS, DynamoDB 등 다양한 데이터 소스를 받아 사용이 가능하다.
제일 중요한 점은 알아서 GUI 환경에서 Flow를 생성하면 그에 맞춰서 Spark 문을 완성시켜준다!

왜 AWS Glue를 선택하는가

ETL의 기능을 필요로 하는 고객이 있는데 오픈 소스를 사용한 ETL 과정을 사용할 경우, 처음부터 아키텍칭을 해야 하며 그 툴의 사용 방법을 익히기까지 많은 시간이 든다.
예제 : ElasticStack 사용한 ETL 구조
1.
데이터 수집을 위한 API나 크롤링 스크립트 작성을 하여 데이터를 수집
2.
logstash로 정기적으로 가져와 통합시킨 후 Elasticsearch에 저장
3.
이후 데이터 분석을 위해 Elasticsearch API를 사용해 데이터를 가져와 python 스크립트를 사용해 데이터 분석을 진행 후 다시 export
ElasticStack flow를 보면 사실 Glue와 비교할 만한 서비스는 logstach이다.
elastic 홈페이지에서 발췌한 Logstach의 ETL
Logstash는 사용자가 직접 서버를 관리하고 설정해야 한다.
말 그대로 서버를 열어 초기 세팅이 필요하다 것이 단점
또한 Filter에서 지원하는 Plugin이나 사용 방법 등 많은 내용을 공부해야 하기 때문에 데이터 파이프라인에 익숙지 않다면 사용하기 어려울 수 있다.
그러나 AWS Glue는 관리형 서비스로서 사용자가 서버나 인프라를 직접 관리할 필요가 없고 Filter 과정이 정형화 되어있는 편이라고 할 수 있다.

Glue의 구성 요소

1.
Data Store : S3, RDS, Redshift, Kinesis, Apache kafka 등 데이터 저장 서비스나 데이터 스트림 서비스
2.
Classifier : 데이터의 스키마를 결정하고 일반적인 파일들의 분류자를 제공(ex. csv, tsv 파일들)
3.
Crawler : Classifier의 우선 순위 지정 목록을 통해 데이터의 스키마를 결정한 다음, 메타 데이터 테이블을 생성
4.
Data Catalog : 테이블 정의, 작업 정의 및 기타 관리 정보를 포함
5.
Job : ETL 작업을 수행하는 데 필요한 변환 스크립트, 데이터 원본 및 데이터 대상으로 구성된 비즈니스 로직
6.
Connection : AWS의 다른 데이터 저장 서비스나 사용자의 VPC환경 내부에 있는 데이터베이스에서 데이터 추출을 위한 장치
7.
Script : Apache Spark에서 사용하는 PySpark, Scala등으로 짜여진 ETL 작업 스크립트
8.
Schedule or Event : Job이 실행되는 주기를 설정하거나, 혹은 특정 이벤트로 인한 트리거로 실행

Data Stores(데이터 스토어)

데이터를 지속적으로 저장하기 위한 저장소(Ex. S3, 관계형 데이터베이스 등)

Classifier(분류자)

데이터 스키마를 결정하며, Glue는 CSV, JSON, AVRO, XML 등과 같은 일반 파일 형식에 대한 분류자를 제공한다.

Data Source와 Data Target

Data Source: 데이터가 추출되는 원본 위치로, AWS의 데이터 저장소뿐만 아니라 외부 데이터베이스와 데이터 파일 시스템 등에서 데이터를 가져올 수 있다.
Data Target: 변환된 데이터를 저장하는 목적지로, 데이터 웨어하우스나 데이터 레이크와 같은 저장소에 데이터를 로드한다.

Crawler (크롤러)

Data Source에서 메타데이터를 수집하여 Data Catalog에 등록하는 역할을 한다.
데이터 스키마를 자동으로 탐지하고 업데이트하며, 다양한 데이터 소스에서 구조를 추출하여 데이터 카탈로그에 기록한다.

Data Catalog (데이터 카탈로그)

AWS Glue의 핵심 메타데이터 저장소로, 데이터베이스, 테이블, 스키마 정보 등 데이터를 구조화하여 저장한다.
Glue의 모든 작업은 이 Data Catalog를 참조하여 수행된다.
Crawler가 데이터 소스에서 메타데이터를 수집하고 Data Catalog를 업데이트한다.

Job (작업)

ETL 작업을 수행하는 데 필요한 비즈니스 로직
추출한 데이터를 변환하고, 변환된 데이터를 로드하는 ETL(Extract, Transform, Load) 프로세스를 정의하는 실행 단위
변환 스크립트, 데이터 원본 및 데이터 대상으로 구성
스크립트를 통해 데이터를 변환할 수 있으며, 주로 파이썬이나 스파크를 사용하여 작성된 ETL 스크립트를 실행한다.

Scheduler or Event (스케줄러 또는 이벤트)

Job을 자동으로 실행하도록 예약하거나 특정 이벤트에 의해 트리거될 수 있다.
정기적으로 데이터 파이프라인을 자동화할 때 유용하며, EventBridge와 같은 서비스와 연계할 수 있다.

Connection(연결)

특정 데이터 스토어에 연결하는 데 필요한 속성을 포함하는 Data Catalog 객체

Glue Studio - ETL Jobs

AWS Glue 의 새로운 시각적 인터페이스
추출-변환-로드(ETL)가 필요한 개발자들이 AWS Glue 에서 ETL 작업을 손쉽게 작성하여 실행 및 모니터링 가능이 가능하다.
경험 수준과 관계없이 모든 사용자가 코드를 작성하지 않고 AWS Glue의 서버리스 Apache Spark 기반 ETL 플랫폼에서 빅데이터를 처리 가능하다.
Apache Spark는 Python, Scala를 지원한다.

Visual ETL

주요 Sources & Targets

1.
S3 (Simple Storage Service)
설명: AWS Glue에서 가장 널리 사용되는 데이터 소스 중 하나, 구조화된 데이터(CSV, JSON, Parquet 등)와 비구조화된 데이터를 저장할 수 있다.
2.
RDS (Relational Database Service)
설명: MySQL, PostgreSQL, Oracle, SQL Server 등 다양한 관계형 데이터베이스를 지원
3.
Redshift
설명: AWS의 데이터 웨어하우스 서비스로, 대규모 데이터 분석에 최적화되어 있다.
4.
DynamoDB
설명: 완전관리형 NoSQL 데이터베이스 서비스로, 키-값 및 문서 데이터 구조를 지원
5.
Aurora
설명: MySQL 및 PostgreSQL 호환의 고성능 관계형 데이터베이스 서비스
6.
Data Catalog
설명 : 데이터의 메타데이터를 중앙에서 관리하고 조직화하는 역할

Transforms

1.
ApplyMapping
설명: 데이터의 필드 이름과 데이터 타입을 매핑하여 변환
용도: 소스 데이터의 스키마를 타겟 스키마에 맞추기 위해 사용
2.
SelectFields
설명: 특정 필드만 선택하여 데이터 프레임을 축소
용도: 불필요한 필드를 제거하고 필요한 데이터만 선택할 때 사용
3.
DropFields
설명: 지정된 필드를 데이터 프레임에서 제거
용도: 특정 필드를 삭제하여 데이터의 크기를 줄이거나 보안 목적으로 사용
4.
Filter
설명: 지정된 조건에 따라 행을 필터링
용도: 데이터의 특정 조건을 만족하는 부분만 추출할 때 사용
5.
Join
설명: 두 개 이상의 데이터 프레임을 특정 키를 기준으로 조인
용도: 서로 다른 데이터 소스를 통합하여 분석할 때 사용
6.
ResolveChoice
설명: 데이터 타입 불일치나 선택적 필드 처리를 해결
용도: 데이터 타입 충돌을 해결하거나 NULL 값을 처리할 때 사용
7.
Relationalize
설명: 중첩된 구조의 데이터를 관계형 데이터로 변환
용도: JSON이나 복잡한 구조의 데이터를 SQL 쿼리로 쉽게 접근할 수 있는 형태로 변환할 때 사용
8.
Unnest
설명: 배열이나 리스트 형태의 중첩 데이터를 평탄화
용도: 중첩된 데이터 구조를 단순화하여 분석을 용이하게 할 때 사용
9.
GroupBy
설명: 특정 필드를 기준으로 데이터를 그룹화하고 집계
용도: 데이터의 통계적 분석이나 집계가 필요할 때 사용
10.
Map
설명: 사용자 정의 함수를 각 행에 적용하여 데이터를 변환
용도: 복잡한 변환 로직을 구현하거나 맞춤형 데이터 처리가 필요할 때 사용
11.
Explode
설명: 배열이나 리스트 형태의 필드를 여러 행으로 분해
용도: 중첩된 리스트 데이터를 개별 행으로 분리하여 처리할 때 사용
12.
RenameField
설명: 필드의 이름을 변경
용도: 스키마 변경이나 가독성을 위해 필드 이름을 수정할 때 사용
13.
SplitFields
설명: 하나의 필드를 여러 개의 필드로 분할
용도: 예를 들어, 하나의 문자열 필드에 여러 정보가 포함되어 있을 때 이를 개별 필드로 분리하여 분석을 용이하게 할 때 사용
14.
Convert
설명: 특정 필드의 데이터 타입을 변환
용도: 데이터 타입 불일치를 해결하거나, 분석 및 저장을 위해 데이터 타입을 변경할 때 사용
15.
DropNullFields
설명: NULL 값을 포함하는 모든 필드를 데이터 프레임에서 제거
용도: NULL 값이 있는 필드를 삭제하여 데이터의 일관성을 유지하거나, 분석 시 오류를 방지할 때 사용
16. FillMissingValues
설명: 누락된 값을 지정된 값으로 채움
용도: 데이터 누락으로 인한 분석 오류를 방지하기 위해 기본값이나 특정 값을 사용하여 NULL을 대체할 때 사용
17.
Sort
설명: 특정 필드를 기준으로 데이터를 정렬
용도: 데이터의 순서를 지정하여 정렬된 상태로 분석하거나 저장할 때 사용
18.
ApplyFunction
설명: 사용자 정의 함수를 데이터 프레임의 각 행에 적용
용도: 복잡한 변환 로직을 구현하거나 맞춤형 데이터 처리가 필요할 때 사용

Editer

GUI 환경이 아닌 스크립트 환경에서 작업을 할 수 있는
사실상 Visual ETL에서 전부 가능한 작업들이라 필자는 Visual ETL을 추천한다.

종류

Notebook
ipynb 파일을 직접 업로드하거나 생성하여 관리
우선 iam 정책 설정이 필요하다.
Script Editer
spark/python 엔진을 선택하여 Script를 작성할 수 있도록 해주는 에디터