Udemy AWS DEA) Section 8 : Analytics
목차
AWS Glue
- 서버리스(Serverless) 데이터 통합 서비스
- 데이터 탐색 및 테이블 정의(메타데이터 관리) 지원
- 다양한 데이터 소스에서 스키마(Schema) 자동 감지 및 테이블 정의
- ETL(Extract, Transform, Load) 파이프라인 실행 가능
AWS Glue 주요 기능
✅ 데이터 저장소와 통합 가능
- S3 데이터 레이크 (Data Lake)
- 관계형 데이터베이스 (RDS, Redshift, DynamoDB)
- 기타 SQL 기반 데이터베이스
✅ ETL(추출, 변환, 적재) 작업 지원
- 트리거 기반 실행 (이벤트 발생 시 자동 실행)
- 스케줄 기반 실행 (정해진 일정에 따라 실행)
- 온디맨드 실행 (수동 실행 가능)
✅ 완전 관리형 서비스 (Fully Managed)
- 서버 관리 필요 없음
- 자동 확장 지원
- Apache Spark 기반으로 병렬 데이터 처리 가능
📌 AWS Glue는 데이터 탐색, 테이블 정의, 그리고 ETL 작업을 자동화하는 서버리스 솔루션이다.
AWS Glue Crawler & Data Catalog
✅ Glue Crawler:
- S3, RDS, Redshift, DynamoDB 등의 데이터 소스 스캔 → 자동으로 스키마 생성
- 주기적으로 실행 가능
- Glue Data Catalog에 테이블 정의 저장 (원본 데이터는 그대로 유지됨)
- Glue Data Catalog가 스키마를 정의하면 Athena, Redshift Spectrum, EMR, QuickSight에서 구조화된 데이터처럼 활용 가능
✅ S3 데이터 파티셔닝 (Partitioning) 전략
- S3 데이터 구조를 쿼리 방식에 맞춰 설계해야 성능 최적화 가능
- 시간 기반 쿼리가 많다면 👉 S3://bucket/yyyy/mm/dd/device/
- 디바이스별 쿼리가 많다면 👉 S3://bucket/device/yyyy/mm/dd/
✅ Glue + Hive 통합
- Glue Data Catalog는 EMR의 Hive Metastore로 활용 가능
- 기존 Hive Metastore를 Glue Data Catalog로 마이그레이션 가능
AWS Glue ETL (Extract, Transform, Load)
✅ Glue ETL 주요 기능
- 자동 코드 생성 지원 (Python / Scala 기반)
- S3, RDS, Redshift, JDBC 데이터 소스로부터 데이터 추출 가능
- 완전 관리형 (Fully Managed) → Spark 기반 서버리스 실행
- Glue Scheduler로 작업 스케줄링 가능
- Glue Triggers를 활용해 이벤트 기반 자동 실행 가능
✅ ETL 변환 (Transformation) 기능
- DropFields, DropNullFields → 불필요한 컬럼 삭제
- Filter → 특정 조건을 만족하는 데이터만 필터링
- Join → 여러 데이터셋 병합
- Map → 필드 추가/삭제, 외부 데이터 조회
✅ Glue DynamicFrame
- Spark의 DataFrame과 유사하지만, ETL 기능이 확장된 형태
- DynamicRecord를 포함하는 컬렉션
- Python 및 Scala API 지원
✅ Glue ResolveChoice
- DynamicFrame에서 데이터 불일치 해결
- make_cols → 동일한 컬럼을 타입별로 분리 (price_double, price_string)
- cast → 모든 값을 특정 타입으로 변환
- make_struct → 여러 타입을 포함하는 구조체 생성
AWS Glue Data Catalog 수정
✅ 스키마 및 파티션 업데이트
- 크롤러 재실행
- enableUpdateCatalog 및 partitionKeys 옵션 사용
- updateBehavior 옵션 활용
✅ 새로운 테이블 생성
- enableUpdateCatalog / updateBehavior + setCatalogInfo 사용
- 제한 사항:
- 지원 파일 형식: JSON, CSV, Avro, Parquet
- Parquet의 경우 특별한 코드 필요
- 중첩된(Nested) 스키마는 지원되지 않음
AWS Glue 개발 환경
✅ Glue Development Endpoints
- ETL 스크립트를 개발 후 Glue에서 실행 가능
- 보안 그룹을 활용한 VPC 내 개발 환경 제공
- 연결 방법:
- Apache Zeppelin (로컬 머신)
- Zeppelin Notebook (EC2)
- SageMaker Notebook
- 터미널 (Terminal)
- PyCharm Professional Edition
- Elastic IP 활용 시 Private Endpoint 접근 가능
📌 AWS Glue는 강력한 데이터 크롤링, ETL, 그리고 데이터 카탈로그 기능을 제공하는 서버리스 솔루션으로, 데이터 분석 및 머신러닝 워크플로우를 최적화하는 데 유용하다.
AWS Glue Job 실행 방식
✅ 스케줄링 (Scheduling)
- Cron 스타일의 시간 기반 스케줄링 가능
- Glue Job Bookmarks를 활용해 상태 저장 가능
- 이전 실행 데이터를 재처리하지 않고, 새로운 데이터만 처리 가능
- S3, 관계형 데이터베이스(JDBC)와 호환 (단, PK가 순차적이어야 함)
- 새로운 행만 처리 가능, 기존 행 업데이트는 감지하지 않음
✅ CloudWatch Events 활용
- ETL 작업 성공 또는 실패 시 Lambda 함수 실행 또는 SNS 알림 발송
- EC2 실행, Kinesis 이벤트 전송, Step Function 활성화 등의 자동화 가능
AWS Glue 비용 모델
💰 과금 방식
- 크롤러(Crawler) 및 ETL 작업 실행 시간(초 단위) 기준으로 과금
- Glue Data Catalog의 첫 100만 개 객체 저장 및 접근 무료
- ETL 개발을 위한 Development Endpoint는 분 단위 과금
AWS Glue Anti-Patterns (비효율적인 사용 사례)
🚫 다중 ETL 엔진 사용
- Glue ETL은 Apache Spark 기반
- Hive, Pig 같은 다른 ETL 엔진을 사용하려면 AWS Data Pipeline 또는 EMR이 더 적합
🚫 기존에는 Glue에서 실시간 스트리밍 ETL이 비효율적이었지만, 현재는 지원됨
- 2020년 4월부터 Kinesis, Kafka와의 스트리밍 ETL 지원
- 데이터를 실시간으로 변환 및 정제 후 S3나 다른 데이터 저장소에 저장 가능
- Apache Spark Structured Streaming 기반
AWS Glue Studio: 시각적 ETL 개발 도구
✅ Glue Studio 주요 기능
- 비주얼 인터페이스를 통해 ETL 워크플로우 설계
- DAG(Directed Acyclic Graph) 기반 ETL 워크플로우 생성 가능
- S3, Kinesis, Kafka, JDBC 등 다양한 데이터 소스와 연계 가능
- 데이터 변환(Transform), 샘플링(Sample), 조인(Join) 등 기능 제공
- S3 및 Glue Data Catalog에 데이터 저장 가능
- ETL 작업의 실행 상태 및 수행 시간 대시보드 제공
AWS Glue Data Quality (데이터 품질 관리)
✅ 데이터 품질 규칙 (Data Quality Rules)
- 수동 설정 가능, 또는 자동 추천 기능 지원
- Glue Job 내에서 데이터 품질 검증 가능
- Data Quality Definition Language (DQDL) 사용
- 검증 결과를 CloudWatch에 보고하거나, 품질 문제 발생 시 Glue Job 실패 처리 가능
📌 AWS Glue는 단순한 ETL 서비스가 아니라, 데이터 카탈로그 관리, 스트리밍 ETL, 시각적 개발 도구, 그리고 데이터 품질 관리까지 포함하는 강력한 데이터 처리 플랫폼이다.
AWS Glue Data Quality란?
AWS Glue Data Quality는 AWS Glue에서 제공하는 데이터 품질 검증 기능으로, ETL(Extract, Transform, Load) 과정에서 데이터의 정확성과 신뢰성을 보장하기 위해 사용됩니다
AWS Glue Data Quality 주요 기능
✅ 데이터 품질 검증 (Data Quality Rules)
- 수동 규칙 정의 또는 자동 추천 규칙 사용 가능
- Glue Jobs와 통합되어 데이터 품질 검증 가능
- Data Quality Definition Language (DQDL) 사용
- 데이터 품질 검증 결과를 CloudWatch에 보고 가능
✅ Glue Job 실행 중 품질 문제 감지 및 대응
- 데이터 품질 기준을 만족하지 않으면 Glue Job 실패 처리 가능
- 또는 문제를 단순히 CloudWatch에 기록하도록 설정 가능
✅ 데이터 품질 지표 모니터링
- 이전 실행 데이터와 비교하여 품질 변화 감지 가능
- Glue Studio에서 품질 대시보드를 통해 시각적으로 분석 가능
AWS Glue DataBrew란?
AWS Glue DataBrew는 코드 없이 시각적으로 데이터를 준비할 수 있는 도구로, 대량의 데이터를 사전 처리(pre-processing)하고 변환하는 데 사용됩니다.
AWS Glue DataBrew 주요 기능
✅ 시각적 데이터 준비 (No-Code UI)
- 코드 없이 UI를 활용하여 데이터 변환 가능
- 대량의 데이터(빅데이터)도 처리 가능
- 250개 이상의 사전 정의된 데이터 변환 기능 제공
✅ 데이터 소스 및 출력 지원
- 입력 데이터 소스:
- S3, 데이터 웨어하우스(Redshift), RDS, Snowflake 등
- 출력 데이터 저장 위치:
- S3 (CSV, JSON, Parquet 등 지원)
✅ 데이터 변환 기능
- “Recipe” 기반 데이터 변환
- 변환 단계를 Recipe(레시피)로 저장하여 재사용 가능
- Recipe를 Glue Job으로 등록하여 자동 실행 가능
- 예제: 특정 컬럼을 Key-Value 형식으로 변환
{ "RecipeAction": { "Operation": "NEST_TO_MAP", "Parameters": { "sourceColumns": "[\"age\",\"weight_kg\",\"height_cm\"]", "targetColumn": "columnName", "removeSourceColumns": "true" } } }
✅ 데이터 품질 검증
- 데이터 품질 규칙을 정의하고 검증 가능
- Redshift 및 Snowflake에서 사용자 정의 SQL 쿼리를 활용한 데이터셋 생성 가능
✅ 보안 및 규정 준수
- KMS를 통한 데이터 암호화 지원 (사용자 관리 키 지원)
- SSL을 통한 데이터 전송 암호화 지원
- IAM을 통한 사용자 권한 관리 가능
- CloudWatch & CloudTrail과 통합하여 데이터 활동 모니터링 가능
AWS Glue DataBrew의 PII (개인정보 보호) 처리
DataBrew는 PII(개인 식별 정보)를 자동 감지하고 변환할 수 있습니다.
📌 주요 개인정보 보호 기능
대체 (Substitution) | 데이터를 무작위 값으로 변경 |
셔플링 (Shuffling) | 데이터 순서를 무작위로 변경 |
결정적 암호화 (Deterministic Encryption) | 동일한 입력값이 동일한 암호화 값을 가지도록 변환 |
확률적 암호화 (Probabilistic Encryption) | 입력값에 따라 무작위 암호화 수행 |
복호화 (Decryption) | 암호화된 데이터를 원래 값으로 복원 |
Null 처리 또는 삭제 (Nulling out / Deletion) | 데이터 삭제 또는 Null 값 변환 |
마스킹 (Masking) | 특정 패턴을 기반으로 데이터 마스킹 |
해싱 (Hashing) | 데이터를 암호화된 해시 값으로 변환 |
🛠️ 예제:
- 이메일을 REPLACE_WITH_RANDOM 변환으로 처리
- 이름을 MASK_CUSTOM을 사용하여 부분 마스킹 적용
AWS Glue Workflows란?
AWS Glue Workflows는 여러 개의 Glue Job 및 Crawler를 순차적으로 실행하는 오케스트레이션 기능을 제공합니다.
✅ 주요 기능
- 다양한 Glue Job 및 Crawler를 하나의 Workflow에서 실행 가능
- AWS Glue 콘솔, API 또는 Glue Blueprint를 통해 생성 가능
- 복잡한 ETL 프로세스를 자동화하는 데 사용됨
✅ Glue Workflow Trigger (트리거)
- 트리거를 사용하여 Glue Job 및 Crawler 실행 자동화
- 트리거 유형:
- 스케줄 기반 (cron 표현식 사용)
- 이벤트 기반 (S3 객체 생성, 데이터 도착 등)
- 온디맨드 (On-Demand)
- 배치 조건 설정 가능
- 특정 개수의 이벤트가 발생했을 때 실행 (Batch Size)
- 특정 시간 내에 발생한 이벤트를 묶어서 실행 (Batch Window, 기본값: 15분)
AWS Lake Formation이란?
AWS Lake Formation은 AWS에서 보안이 강화된 데이터 레이크(Data Lake)를 쉽게 구축하는 서비스입니다.
✅ 주요 기능
- 데이터 로딩 및 데이터 흐름 모니터링
- S3 파티셔닝 자동 설정 및 관리
- 데이터 암호화 및 키 관리 (KMS 연동 가능)
- ETL 변환 작업 정의 및 모니터링 가능
- 데이터 접근 제어 및 감사 기능 지원
📌 AWS Glue 기반으로 구축되었으며, Glue의 기능을 확장하여 보안 및 관리 기능을 추가한 서비스입니다.
AWS Lake Formation: Pricing
- Lake Formation 자체는 무료
- 하지만, 내부적으로 사용하는 AWS 서비스는 비용이 발생
- Glue • S3 • EMR • Athena • Redshift
AWS Lake Formation: 데이터 레이크 구축 과정
AWS Lake Formation을 활용하여 보안이 강화된 데이터 레이크를 구축하는 과정은 다음과 같습니다.
1. IAM 사용자 생성 (데이터 분석가)
- 데이터 접근 권한을 제어하기 위해 IAM 사용자를 생성
- 데이터 분석가에게 필요한 권한만 부여
2. AWS Glue 연결 생성
- 데이터 원본에 연결할 AWS Glue Connection을 생성
- RDS, Redshift, 온프레미스 데이터베이스 등 다양한 데이터 소스를 지원
3. S3 버킷 생성 (데이터 레이크 저장소)
- 데이터 레이크의 원본 데이터를 저장할 Amazon S3 버킷 생성
- 데이터 계층화 및 보안 설정 적용
4. S3 경로 등록 및 권한 부여
- Lake Formation에 S3 경로 등록
- 특정 사용자 및 서비스(Athena, Redshift 등)에 대한 접근 권한 설정
5. 데이터베이스 및 데이터 카탈로그 생성
- Lake Formation에서 데이터베이스 생성
- Glue Data Catalog에 테이블을 등록하여 메타데이터 관리
- 접근 권한을 부여하여 필요한 사용자만 사용할 수 있도록 설정
6. 블루프린트 기반 워크플로우 생성 및 실행
- Database Snapshot 블루프린트 활용
- 데이터베이스 백업을 주기적으로 저장하는 자동화된 ETL 워크플로우 구성
- 워크플로우 실행하여 데이터 수집 및 처리
7. 데이터 읽기 권한 부여
- Athena, Redshift Spectrum, EMR 등의 분석 도구에서 SELECT 권한을 부여
- 필요에 따라 세부적인 테이블 및 컬럼 단위의 접근 제어 설정 가능
AWS Lake Formation을 사용한 데이터 레이크 구축 과정 요약
- IAM 사용자 생성 및 권한 부여
- AWS Glue 데이터 소스 연결
- 데이터 저장을 위한 S3 버킷 생성
- S3 데이터를 Lake Formation에 등록 및 접근 권한 관리
- 데이터베이스 및 Glue Data Catalog 생성
- 블루프린트 기반의 워크플로우 실행
- Athena, Redshift Spectrum 등의 분석 서비스에 SELECT 권한 부여
📌 Lake Formation을 활용하면 데이터 관리 및 보안 설정을 간편하게 구성할 수 있다.
AWS Lake Formation: 주요 기능과 보안 관리
AWS Lake Formation은 데이터 레이크를 효율적으로 구성하고 보안을 강화할 수 있도록 다양한 기능을 제공한다. 여기에서는 크로스 계정 권한 설정, 거버넌스 테이블, 세부적인 보안 정책 등에 대해 정리한다.
1. 크로스 계정 권한 관리
AWS Lake Formation에서는 다른 AWS 계정과 데이터 레이크를 공유할 수 있다. 이를 위해 다음과 같은 설정이 필요하다.
- 데이터 수신 계정을 Lake Formation 관리자로 설정해야 한다.
- 조직 외부 계정과 공유할 경우, AWS Resource Access Manager를 사용할 수 있다.
- IAM 권한이 올바르게 설정되어 있어야 크로스 계정 액세스가 가능하다.
- Athena 및 Redshift 쿼리에서는 매니페스트(manifest) 파일을 지원하지 않음.
- KMS 암호화된 데이터 카탈로그를 사용하려면, IAM에서 KMS 키에 대한 액세스 권한이 필요하다.
- 블루프린트 및 워크플로우 생성 시에도 IAM 권한이 필요하다.
2. 거버넌스 테이블(Governed Tables) 및 보안
Lake Formation은 이제 ACID 트랜잭션을 지원하는 거버넌스 테이블을 제공한다.
- 거버넌스 테이블은 S3 기반의 새로운 테이블 유형으로, 트랜잭션 일관성을 유지할 수 있다.
- 일단 거버넌스 테이블로 설정하면 변경이 불가능하다.
- Kinesis 등의 스트리밍 데이터도 지원한다.
- Athena에서 직접 쿼리 가능하다.
- 자동 압축(Auto Compaction) 기능을 통해 스토리지를 최적화한다.
- 행(Row) 및 셀(Cell) 수준의 세부적인 보안 정책을 적용할 수 있음.
- 이러한 추가 기능은 사용량에 따라 추가 요금이 발생할 수 있음.
3. 데이터 권한 관리
Lake Formation에서는 세밀한 권한 관리가 가능하다.
- IAM 사용자/역할(Role), SAML 인증, 외부 AWS 계정과 연결할 수 있다.
- 데이터베이스, 테이블, 컬럼 수준에서 정책 태그(Policy Tags)를 적용하여 권한을 관리할 수 있다.
- 특정 테이블이나 컬럼에 대해 세부적인 권한을 부여할 수 있다.
4. 데이터 필터링 및 보안 설정
Lake Formation에서는 세부적인 보안 정책을 적용할 수 있다.
- 컬럼(Column), 행(Row), 셀(Cell) 수준의 보안 설정 가능
- 테이블에 SELECT 권한을 부여할 때 특정 필터를 적용 가능
- 행(Row) 수준 보안: 모든 컬럼을 허용하지만 특정 행만 접근 가능
- 컬럼(Column) 수준 보안: 특정 행을 허용하지만 특정 컬럼만 접근 가능
- 셀(Cell) 수준 보안: 특정 행과 특정 컬럼만 접근 가능
- 이러한 필터는 AWS 콘솔 또는 CreateDataCellsFilter API를 통해 생성 가능
📌 AWS Lake Formation은 강력한 데이터 거버넌스 및 보안 기능 을 제공하며, 크로스 계정 데이터 공유, ACID 트랜잭션 지원, 세부적인 권한 관리 가 가능하다. 이를 활용하면 기업의 데이터 레이크 운영을 더 안전하고 효율적으로 관리 할 수 있다.
AWS Glue DataBrew vs Glue Workflows vs Lake Formation
- 서비스 주요 기능 주요 사용 사례
AWS Glue DataBrew | UI 기반 데이터 변환 | 코드 없이 데이터 정제, 품질 검증 |
AWS Glue Workflows | Glue Job 및 Crawler 자동화 | 복잡한 ETL 워크플로우 구축 |
AWS Lake Formation | 보안이 강화된 데이터 레이크 | 데이터 접근 제어, 모니터링 |
📌 AWS Glue DataBrew를 활용하면, 데이터 엔지니어링 및 분석을 위한 데이터를 손쉽게 변환하고 관리할 수 있습니다.
특히, 코드 없이도 데이터 정제 및 품질 관리를 수행할 수 있어, 비즈니스 팀과 데이터 엔지니어 모두 쉽게 사용할 수 있는 장점이 있습니다!
Amazon Athena
Amazon Athena는 서버리스 쿼리 서비스로, S3에 저장된 데이터를 SQL을 사용하여 직접 분석할 수 있도록 지원한다. 데이터를 별도로 로드할 필요 없이 S3에서 직접 분석이 가능하며, Presto 기반으로 동작한다.
Athena의 특징
- 완전 서버리스: 인프라 관리가 필요 없음
- 다양한 데이터 형식 지원:
- 텍스트 기반: CSV, TSV, JSON
- 컬럼 기반: ORC, Parquet (압축, 스플릿 가능)
- 기타: Avro, 다양한 압축 포맷(Snappy, Zlib, Gzip 등)
- 구조화되지 않은 데이터, 반구조화 데이터, 구조화된 데이터 모두 지원
주요 사용 사례
- 웹 로그 분석 (Ad-hoc Query)
- Redshift로 데이터를 적재하기 전에 임시 데이터 검토
- CloudTrail, CloudFront, VPC, ELB 로그 분석
- Jupyter, Zeppelin, RStudio 같은 노트북 도구와 통합
- QuickSight 등 BI 툴과 연동 (ODBC / JDBC 지원)
Athena + AWS Glue 연동
Athena는 Glue Data Catalog와 통합하여 메타데이터를 관리할 수 있다.
- Glue Crawler가 S3 데이터를 스캔하여 스키마를 자동으로 생성
- Glue Data Catalog를 사용하여 구조화되지 않은 데이터를 구조화된 데이터처럼 사용 가능
- Redshift Spectrum, EMR, QuickSight 등과 통합 가능
Workgroups (작업 그룹) 기능
- 사용자, 팀, 애플리케이션, 워크로드 단위로 작업 그룹 관리 가능
- 워크그룹별로 쿼리 기록, 데이터 스캔 제한, IAM 정책, 암호화 설정 가능
- CloudWatch 및 SNS와 통합하여 모니터링 가능
비용 모델
- 사용한 만큼 지불 (Pay-as-you-go)
- $5 per TB scanned (스캔한 데이터 1TB당 $5)
- DDL 쿼리(CREATE, ALTER, DROP 등)는 무료
- 컬럼 기반 데이터 포맷(ORC, Parquet) 사용하면 비용 30~90% 절감 가능
- Glue, S3 사용 시 추가 비용 발생
보안 및 접근 제어
- IAM, ACL, S3 버킷 정책으로 접근 제어 가능
- 기본 제공 권한: AmazonAthenaFullAccess / AWSQuicksightAthenaAccess
- 쿼리 결과 암호화 지원 (S3 서버측 암호화, KMS 키 사용 가능)
- TLS를 통한 전송 중 암호화 지원
- S3 버킷 정책을 활용한 크로스 계정 접근 가능
Athena의 비효율적인 활용 (Anti-patterns)
- 고도로 서식화된 리포트 생성 → QuickSight 사용 추천
- ETL 용도로 사용 → AWS Glue 사용 추천
성능 최적화 전략
- 컬럼 기반 저장 형식(ORC, Parquet) 사용
- 작은 파일 여러 개보다 큰 파일 몇 개로 저장하는 것이 성능에 유리
- 파티션 사용 (MSCK REPAIR TABLE 명령어로 추가 가능)
ACID 트랜잭션 지원 (Apache Iceberg)
- Athena는 Apache Iceberg를 통해 ACID 트랜잭션을 지원
- CREATE TABLE 시 'table_type' = 'ICEBERG' 옵션 추가
- 동시 사용자가 안전하게 행 수준(row-level) 수정 가능
- EMR, Spark 등과도 호환 가능
- 레코드 잠금 기능 필요 없음
- 과거 데이터 복구(Time Travel) 기능 제공 (삭제된 데이터 복원 가능)
- 주기적인 데이터 압축 (OPTIMIZE table REWRITE DATA USING BIN_PACK)
Glue Data Catalog에 대한 세밀한 접근 제어 (Fine-Grained Access Control)
- IAM 기반 데이터베이스 및 테이블 수준 보안 설정 가능
- Lake Formation의 데이터 필터보다 더 광범위한 제한 가능
- 특정 테이블 버전에 대한 접근 제한 불가능
- IAM 정책을 활용하여 특정 데이터베이스 및 Glue Data Catalog에 대한 접근 제어 가능
- 예: DROP TABLE 권한을 제한하는 정책 설정 가능
📌 Amazon Athena는 S3 데이터를 SQL로 쉽게 분석할 수 있는 강력한 도구다. 서버리스 환경에서 빠르게 쿼리를 실행할 수 있으며, 비용 효율성을 극대화하려면 ORC, Parquet 같은 컬럼 기반 데이터 포맷과 파티션을 활용하는 것이 좋다.
📌Glue와 연동하면 메타데이터 관리 및 ETL을 보다 쉽게 수행할 수 있으며, IAM과 Lake Formation을 활용하면 세밀한 보안 정책을 설정할 수도 있다.
CREATE TABLE AS SELECT (CTAS) in Amazon Athena
1. CTAS 개요
- CREATE TABLE AS SELECT (CTAS)는 쿼리 결과를 기반으로 새로운 테이블을 생성하는 기능이다.
- Amazon Athena뿐만 아니라 다양한 데이터베이스에서도 사용 가능하다.
- 기존 테이블에서 서브셋을 생성할 수도 있고, 데이터 형식을 변경하는 용도로도 활용 가능하다.
2. CTAS 사용 예시
(1) 기존 테이블에서 새로운 테이블 생성
CREATE TABLE new_table
WITH (
format = 'Parquet',
write_compression = 'SNAPPY'
) AS
SELECT * FROM old_table;
✅ old_table의 데이터를 Parquet 형식으로 변환하여 new_table을 생성한다.
✅ 데이터를 새로운 포맷으로 저장하는 변환 트릭으로 사용 가능하다.
(2) 외부 위치를 지정하여 테이블 생성
CREATE TABLE my_orc_ctas_table
WITH (
external_location = 's3://my_athena_results/my_orc_stas_table/',
format = 'ORC'
) AS
SELECT * FROM old_table;
✅ S3의 특정 위치에 ORC 형식으로 데이터를 저장한다.
✅ external_location을 설정하면 S3에서 직접 쿼리할 수 있는 테이블이 된다.
Athena Federated Queries (아테나 연합 쿼리)
Athena Federated Queries는 S3 이외의 데이터 소스를 직접 쿼리할 수 있는 기능을 제공한다.
주요 특징
- S3뿐만 아니라 다양한 데이터 소스에 대해 쿼리 가능
- 데이터 소스 커넥터 (Data Source Connector) 를 사용하여 소스 데이터베이스와 Athena 간 변환 수행
- Lambda에서 실행되며, 여러 내장 및 서드파티 커넥터 지원
- Glue 및 Lake Formation과 통합 가능
- VPC Private Endpoint 지원 가능
- 크로스 계정 쿼리 지원 (적절한 권한 필요)
지원되는 데이터 소스
✅ AWS 네이티브 서비스
- CloudWatch
- DynamoDB
- DocumentDB (MongoDB 호환)
- RDS (MySQL, PostgreSQL, SQL Server 등)
- OpenSearch
- JDBC 커넥터
✅ 서드파티 데이터베이스
- Cloudera
- HBase
- Kafka
- Oracle
- Snowflake
- Teradata
- Google BigQuery 등
Federated Queries 주요 기능
(1) Federated Data Source View
- Athena에서 Glue를 활용하여 연합 데이터 소스의 뷰를 저장 가능
- AWS Secrets Manager와 통합 가능 (보안 강화)
- Lake Formation과 연동하여 세밀한 접근 제어 설정 가능
(2) 크로스 계정 연합 쿼리 지원
- AWS 계정 간 데이터를 쿼리할 수 있음
- 적절한 IAM 권한 및 S3 접근 정책 필요
(3) Passthrough Queries
- 원본 데이터베이스의 네이티브 쿼리 언어를 그대로 사용 가능
- 예: MySQL, Snowflake, Redshift, DynamoDB 등에서 원본 쿼리를 직접 실행
(4) Spark 데이터 소스로 활용 가능
- 일부 커넥터는 Spark 데이터 소스로도 사용 가능
📌 CTAS는 Athena에서 데이터 변환 및 저장에 매우 유용한 기능이며, S3에 저장된 데이터를 Parquet, ORC 등의 포맷으로 변환할 수 있다.
📌 Federated Queries를 활용하면 다양한 AWS 및 서드파티 데이터 소스를 직접 쿼리할 수 있으며, AWS Glue, Secrets
📌 Manager, Lake Formation과의 통합을 통해 보안 및 관리 기능을 강화할 수 있다.
📌 Passthrough Queries를 이용하면 원본 데이터베이스의 쿼리 언어를 그대로 사용할 수 있어 편리하다.
📌 Spark 및 크로스 계정 쿼리도 지원하여 확장성이 뛰어나다.
Apache Spark 개요
Apache Spark는 빅데이터를 위한 분산 처리 프레임워크로, 인메모리 캐싱 및 최적화된 쿼리 실행을 제공한다.
Spark의 특징
- 빠른 처리 속도: 기존 MapReduce보다 최대 100배 빠름
- 다양한 언어 지원: Java, Scala, Python, R
- 다양한 워크로드 지원
- 배치 처리 (Batch Processing)
- 인터랙티브 쿼리 (Spark SQL)
- 실시간 분석 (Real-Time Analytics, Spark Streaming)
- 머신러닝 (MLLib)
- 그래프 처리 (GraphX)
Spark의 아키텍처
Spark는 클러스터 기반의 분산 처리 구조를 가진다.
- Driver Program: SparkContext를 통해 작업을 조정
- Cluster Manager: Spark 자체 또는 YARN을 통해 클러스터를 관리
- Executor: 실제 연산을 수행하며 데이터를 캐싱할 수 있음
- RDD (Resilient Distributed Dataset): Spark의 기본 데이터 구조로 분산, 불변성, 내결함성 제공
📌 동작 원리
- SparkContext가 클러스터 매니저를 통해 Executor들에게 작업을 분배
- Executor는 할당된 작업(Task)을 실행하고 메모리에 데이터를 저장하여 캐싱
- 결과를 Driver Program에 반환
Spark의 주요 컴포넌트
(1) Spark Core
- Spark의 핵심 기능 (메모리 관리, 장애 복구, 스케줄링, 분산 처리 등)
(2) Spark SQL
- 구조화된 데이터(Structured Data)를 SQL을 사용해 처리
- JDBC, ODBC, JSON, HDFS, ORC, Parquet, HiveQL 등 지원
(3) Spark Streaming
- 실시간 데이터 스트리밍 처리
- Kafka, Kinesis, Flume, HDFS, ZeroMQ와 연동 가능
(4) MLLib (Machine Learning Library)
- 머신러닝 알고리즘을 제공 (분류, 회귀, 클러스터링, 추천 시스템 등)
(5) GraphX
- 그래프 데이터 처리 및 분석 (현재는 많이 사용되지 않음)
Spark Streaming
실시간으로 지속적으로 생성되는 데이터를 처리하는 기능
val inputDF = spark.readStream.json("s3://logs")
inputDF.groupBy($"action", window($"time", "1 hour")).count()
.writeStream.format("jdbc").start("jdbc:mysql//...")
✅ S3에서 데이터를 실시간으로 읽고, 1시간 단위로 그룹화하여 MySQL에 저장
Spark와 AWS 통합
(1) Spark Streaming + Kinesis
- Amazon Kinesis에서 실시간 데이터 스트림을 수집하여 Spark에서 처리
- Kinesis Client Library (KCL) 사용
📌 구조
- Kinesis Producer → 2. Spark Dataset (KCL 사용) → 3. Spark 실행
(2) Spark + Redshift
- spark-redshift 패키지를 사용하여 Spark에서 Redshift 데이터를 읽고 쓸 수 있음
- Spark SQL을 활용한 대규모 ETL 작업 가능
val df = spark.read
.format("jdbc")
.option("url", "jdbc:redshift://cluster-url")
.option("dbtable", "table_name")
.option("user", "username")
.option("password", "password")
.load()
(3) Amazon Athena for Apache Spark
- Athena에서 Spark을 실행할 수 있는 서버리스 분석 환경
- Jupyter Notebook과 통합하여 데이터 분석 가능
- Firecracker를 사용하여 빠르게 Spark 리소스를 프로비저닝
- CLI 및 API 지원
aws athena create-work-group --name "MySparkWorkGroup" aws athena start-session --work-group "MySparkWorkGroup"
- DPU(Distributed Processing Unit) 설정 가능 (컴퓨팅 비용 최적화)
Spark의 사용 제한 (Anti-patterns)
- OLTP (Online Transaction Processing)에는 적합하지 않음
- Spark는 OLAP(Online Analytical Processing) 및 배치 처리에 적합
- 짧은 지연 시간이 필요한 트랜잭션 처리에는 부적절
- 트랜잭션 기반 애플리케이션의 경우 RDBMS 또는 NoSQL이 더 적합
📌 Apache Spark는 빅데이터 분산 처리 프레임워크로, 다양한 분석 및 머신러닝 기능을 제공
📌 AWS와 통합하여 서버리스 Spark 환경 구축 가능 (Kinesis, Redshift, Athena 등과 연계)
📌 실시간 스트리밍, ETL, 머신러닝, 그래프 분석 등 다양한 워크로드에 활용 가능
📌AWS의 Athena for Apache Spark를 사용하면 Jupyter Notebook 기반 서버리스 환경에서 Spark 실행 가능