///
Search
🏓

Amazon Athena에 대해 알아보기

대화형식의 SQL 쿼리 엔진

1. Introduction to Amazon Athena

Amazon Athena

서버리스 분석 쿼리 엔진
S3에 저장된 데이터 기반으로 처리
아래 3가지 키워드 기억
분산
SQL Query Engine
Amazon S3

Why Amazon Athena?

데이저 저장 공간과 쿼리 엔진 분리
서버리스
쿼리 수행 만큼만 비용 지불
데이터를 읽어 올때 스키마를 사용한다.!!
데이터를 적재할 때 스키마를 고려할 필요가 없다.

Simple Pricing

S3 데이터를 스캔할 때 비용 발생
+ S3 GET, LIST, PUT 비용

Run standard SQL

ANSI SQL 지원
Open Source Presto 기반으로 Amazon Athena 개발됨.
Presto에서 지원되는 대부분의 쿼리 지원

Fast Performance for Large Data Sets

대용량의 데이터에 대해 빠른 쿼리 수행
Federated Query 지원
다른 종류의 DB를 Athena와 연동해서 쿼리 가능

How to handle Large Data Sets?

RDS
RDS에서 성능을 늘리려면…
Scale-up, Scale-out(Master 1ea)

Decouple storage from compute

Athena
Amazon Athena에서 성능을 늘리려면…
Scale-out 전략
Query Engine, Storage 분리
Multi Master(writer)
Computer - Storage Interface Layer - Storage

Distributed Data Processsing System

2. Athena Design Patterns

1: Ad-hoc use-case

데이터에서 SQL로 분석할때…

2: SaaS use-case

SaaS형태로 데이터 분석 서비스 제공
실시간성 (RDS) + 배치(Athena)

3: ETL and query use-case

Data 변형 후 적재 등에 Query기반의 Athena 사용

4: Data science exploration and feature engineering

Comparison of SQL Processing engines

Amazon EMR/Glue
Amazon EMR(Presto)
Amazon Athena
Amazon Redshift
Data Warehouse
Data Store: Redshift Node상

3. Athena in Action

Create External Tables

S3에 저장된 데이터에 대한 스키마를 먼저 정의해야 한다.
Create External Tables
Athena에서 테이블 삭제시 S3 상에 데이터 삭제 X
읽을 때 스키마 정의

Navigate to ‘Saved Queries’ to get DDL

“Saved Queries’ 항목 참고해서 Athena Query 작성.

Create External Table using DDL(예)

비행 정보 관련 테이블…

New Flights Parquet Table Created(예)

SELECT * FROM XXX LIMITS 100;

Save Query Results

실행 결과는 Default로는 위 형식의 S3 Bucket를 생성하고 해당 버킷내 저장됨.

How to execute query?

광고 데이터(예)

Data Schema & Location

Schema + Location

3.1 Tuning and Design Patterns

Data Formats and SerDes

Apache web logs
Regular Expression 으로 구분 가능한 형식

Data Formats in Create Table

Column Data Types

Example

ROW FORMAT serde..
각 파일에 행의 값을 Serialize / Deserialize 하기 위해 설정

3.2 Partitions

Partitions

Partition = 폴더로 생각

Example

PARTITIONED BY..

Partitions in Create Table

How does partioning work?

Partition 했을 때 장점은..
위 비행 정보 예를 보면.. 2000년 이전 폴더(파티션)은 접근하지 않는다.
비용 절감

Using Partition Projection

where조건에 파티션이 들어가면 특정 파티션만 찾아서 빠르게 접근 가능하다.

Data Catalog (Meta Store) - Schema, Location

Data Catalog(Meta Store)에 데이터 위치, 파티션이 저장된다.
Partitions X
전체 데이터 가져온 후 필터링
Partitions O
데이터 가져올 때 파티션 적용

Partition by Running MSCK Repair

아예 없거나 잘못된듯 하여 전체 파티션을 다 맞추겠다 → MSCK

Partition by Manually Adding Partitions

Data Catalog(Meta Store) - Schema, Location

파티션을 Data Catalog에 추가하더라도 S3에 데이터가 없더라도 오류 발생하지 않는다.
실 사용시..
S3 데이터 적재와 무관하게 Data Catalog에 파티션을 미리 생성해 놓는다.
S3에는 데이터가 적재되었으나 Data Catalog에 해당 파티션이 없는 경우 데이터를 읽을 때 문제 발생(읽지 못함.)

Convert to Columnar Formats - Parquet/ORC

Data Format이 Athena Query 성능에 영향을 준다.
Columnar Format으로 변경 (BY Hive / Spark)

Different workloads - OLTP vs. OLAP

데이터 분석할 때 OLTP vs. OLAP 으로 나눠볼 수 있다.
OLTP
RDB에서 처리하는 트랜잭션
온라인 트랜잭션 처리
하나의 행에 있는 모든 데이터를 모두 사용하는 경우가 많다.
OLAP
통계 계산
하나의 행에서 특정 컬럼 몇개를 사용하는 경우가 많다.

Row-wise vs. Columnar

Row-wise(OLTP)
전체 행에 대해서 주로 데이터를 처리
Columnar(OLAP)
특정 컬럼 몇개를 선택해서 통계를 낸다.
컬럼 단위로 묶어 놓는게 빠르게 처리 가능하다.
컬럼 단위로 묶는 경우 중복 데이터가 많기 때문에 압축률이 높다
예> Col C(성별) 인 경우 값은 남자 / 여자..
→ Athena는 OLAP 성 처리를 주로 하기 때문에 데이터가 Columnar로 저장되는 것이 좋다.

3.3 Optimize and Secure

Best Practices

Partition your data
Bucket your data
데이터를 버킷팅한다. = 파티셔닝과 유사
Compress and split files
컬럼 형태로 데이터 저장. 압축. 잘 나누자
Optimize File Sizes
파일 사이즈를 적절한 크기로..
파일 단위로 Workload가 분배가 된다. 하나의 파일이 크다고 해서 쪼개지지 않고 전달된다.

Best Practices Continued

Access Control for Athena

3.4 Workgroups

Athena Workgroups

접근 권한을 구축할 때 Workgroup을 사용한다.
Workgroup을 사용하면..
다른 권한
쿼리 메트릭
비용 제어

Workgroups - Workload Isolation

Workgroups - Metric Reporting

Workgroups - Cost Controls

Setting Up Workgroups

RDB에서 특정 사용자에게 테이터베이스, 테이블 접근 권한 제어를 하는 것 처럼 사용 가능하다.

Default Workgroup

3.5 Views

View

Create a View

3.6 CTAS

CREATE TABLE AS SELECT (CTAS)

ETL 가능
특정 테이블에서 특정 컬럼만 뽑아서 새로운 테이블 만들시..

CTAS Example

Use CTAS queries to:

특정 컬럼만 뽑아서 저장
데이터 형식 변환
작은 파일을 큰파일로 변환

Data Processing: ETL vs. ELT

ETL
데이터를 변형한 후 타겟에 저장
변환은 타겟 밖에서 진행
ELT
타겟에 저장한 후 변환 진행
Athena

3.7 Monitoring & Auditing

Workgroups

CloudTrail

Monitoring Athena Queries with CloudWatch Metrics

Monitoring Athena Queries with CloudWatch Events

콘솔은 동기.. SDK 사용 시 비동기로 처리됨.

4. Summary

Key Benefits of Athena

Getting Started