아마존 아테나
더 많은 작업
- Amazon Athena; Athena; 아마존 아테나
- S3에 있는 데이터를 적재 과정 없이 표준 SQL로 바로 조회하는 서버리스 대화형 쿼리 서비스
아마존 Athena
아마존 아테나는 표준 SQL을 사용하여 아마존 S3의 데이터를 쉽게 분석할 수 있는 대화형 쿼리 서비스이다.
데이터를 데이터베이스에 넣지 않고 S3에 있는 CSV, JSON, Parquet, ORC 파일을 그 자리에서 조회한다. 서버나 클러스터를 만들 필요가 없고, 쿼리를 병렬로 실행하며 자동으로 확장된다. SQL 엔진 버전 3은 오픈 소스 Trino·Presto 기반이며, 노트북에서 Apache Spark 코드를 실행하는 기능도 있다. 로그 분석, 임시(ad hoc) 조회, 데이터 레이크 탐색처럼 "가끔, 필요할 때 SQL을 던지는" 분석에 가장 운영 부담이 적은 선택지다. SAA 시험 가이드는 데이터 분석 서비스의 예로 Athena를 첫 번째로 든다.
| 항목 | 설명 |
|---|---|
| 서버리스 | 인프라 설정·관리가 없고 실행한 쿼리에 대해서만 비용을 낸다 |
| 테이블과 카탈로그 | 테이블 정의(스키마, S3 위치, 형식, 파티션)는 AWS Glue 데이터 카탈로그에 저장한다. 크롤러로 자동 생성하거나 DDL로 직접 만든다 |
| 쿼리 결과 | 결과 파일은 지정한 S3 위치에 저장된다 |
| 작업 그룹(workgroup) | 사용자·팀·워크로드별로 쿼리를 분리하고, 쿼리당·작업 그룹당 데이터 사용량 한도를 걸어 비용을 통제한다. 한도를 넘으면 쿼리를 취소하거나 SNS 경보를 보낸다 |
| 연합 쿼리 | 데이터 원본 커넥터로 S3 밖의 관계형·NoSQL·사용자 지정 원본도 SQL로 조회 |
| CTAS | CREATE TABLE AS SELECT로 쿼리 결과를 새 테이블(새 S3 파일)로 저장
|
| Spark on Athena | 노트북에서 Python으로 Spark 애플리케이션을 서버리스로 실행 |
SQL 쿼리의 기본 과금은 쿼리가 스캔한 데이터량이다. 스캔 바이트를 MB 단위로 올림하고 쿼리당 최소 10MB가 적용된다. CREATE, ALTER, DROP 같은 DDL 문과 실패한 쿼리는 과금되지 않고, 취소한 쿼리는 취소 시점까지 스캔한 양만큼 과금된다. 꾸준한 대량 쿼리에는 처리 용량을 미리 확보하는 프로비저닝 용량 옵션도 있다.
스캔량을 줄이면 비용과 시간이 함께 줄어든다. AWS 요금 페이지는 압축, 파티셔닝, 열 형식 변환으로 쿼리당 최대 90%까지 절감할 수 있다고 안내한다.
| 방법 | 효과 |
|---|---|
| 열 형식(Parquet, ORC) | 쿼리에 필요한 열만 읽는다. 행 형식인 CSV·JSON은 열 하나만 써도 파일 전체를 읽는다 |
| 압축 | 같은 데이터를 더 적은 바이트로 읽는다 |
| 파티셔닝 | dt=2026-10-04/처럼 S3 경로를 나누고 WHERE 절에 파티션 열을 쓰면 해당 경로만 읽는다
|
| 파티션 프로젝션 | 파티션이 아주 많은 테이블에서 카탈로그 조회 없이 설정값으로 파티션을 계산해 쿼리를 빠르게 하고 파티션 관리를 자동화한다 |
| 파일 크기 조정 | 아주 작은 파일이 수없이 많으면 오버헤드가 커지므로 적당한 크기로 합친다 |
아파치 파케이 같은 열 형식이 Athena 비용 문제의 표준 답인 이유가 여기에 있다.
이미 CSV로 쌓인 데이터를 Parquet으로 바꿀 때 별도 ETL 도구 없이 Athena 쿼리 하나로 처리할 수 있다.
CREATE TABLE sales.orders_parquet
WITH (
format = 'PARQUET',
write_compression = 'SNAPPY',
external_location = 's3://amzn-s3-demo-bucket/orders_parquet/',
partitioned_by = ARRAY['order_date']
) AS
SELECT order_id, customer_id, amount, order_date
FROM sales.orders_csv;
파티션 열은 SELECT 목록의 마지막에 두어야 한다. 정기적으로 반복해야 하는 대규모 변환이라면 AWS Glue 작업이나 아마존 Data Firehose의 형식 변환이 더 적합하다.
Athena 연합 쿼리(Federated Query)는 데이터 원본 커넥터를 통해 RDS·Aurora 같은 관계형 DB, DynamoDB, 기타 원본의 데이터를 S3 데이터와 함께 SQL로 조회한다. 커넥터는 이용자 계정의 Lambda 함수로 실행되며, 필터 조건을 원본으로 밀어 넣어(push down) 읽는 양을 줄인다. Glue 데이터 카탈로그 연결 기반 커넥터는 Lake Formation의 세분화된 권한과 함께 쓸 수 있다. 연합 쿼리도 스캔량 기준으로 과금되고 Lambda 사용 요금이 별도로 붙는다. 데이터를 옮기지 않고 여러 원본을 한 번에 조인해야 할 때 쓴다.
Athena는 아마존 Quick(이전 아마존 QuickSight)과 연동해 대시보드를 만든다. 아마존 Quick의 BI·시각화 기능은 현재 아마존 Quick Sight라는 이름으로 제공된다. JDBC·ODBC 드라이버로 다른 비즈니스 인텔리전스 도구나 SQL 클라이언트도 붙일 수 있다.
| 요구 | 서비스 |
|---|---|
| S3 데이터를 가끔 SQL로 조회, 인프라 관리 없음 | 아마존 Athena |
| 대규모 정형 데이터를 자주, 빠르게 복잡한 조인과 집계 | 아마존 Redshift(데이터 웨어하우스) |
| Spark·Hadoop 기반 대규모 변환 작업 | 아마존 EMR 또는 AWS Glue |
| 로그 전문 검색, 실시간 대시보드 | 아마존 OpenSearch Service |
- "S3의 로그를 SQL로 분석, 가끔 실행, 운영 부담 최소"면 Athena다. 데이터를 Redshift나 RDS에 적재하는 보기는 과하다.
- "Athena 쿼리 비용 절감·성능 개선"은 Parquet·ORC 변환, 압축, 파티셔닝이다. 인스턴스 크기 조정 같은 보기는 서버리스인 Athena와 무관하다.
- 스키마는 Glue 데이터 카탈로그에, 크롤러로 자동 등록한다는 조합을 기억한다.
- "팀별 쿼리 비용 통제"는 작업 그룹의 데이터 사용량 한도다.
- "S3와 RDS·DynamoDB 데이터를 옮기지 않고 함께 조회"는 연합 쿼리다.
- 시각화 요구가 붙으면 Athena + 아마존 Quick 조합을 고른다.
- Amazon Athena란 무엇인가요? – AWS
- Amazon Athena 요금 – AWS
- Athena에서 데이터 파티셔닝 – AWS
- 쿼리 결과에서 테이블 생성(CTAS) – AWS
- Amazon Athena 연합 쿼리 사용 – AWS