Amazon Athena는 S3에 저장된 데이터를 표준 SQL로 직접 쿼리하는 서버리스 분석 서비스입니다. 프로비저닝할 인프라가 없고, 스캔한 데이터량으로 과금됩니다. 오늘은 파티션·포맷 최적화, CTAS, 페더레이션 쿼리, 비용 절감을 다룹니다.
Athena는 Presto/Trino 기반 엔진(Athena 엔진 v3)으로 동작하며, Glue Data Catalog를 메타스토어로 사용합니다. 테이블은 S3 위치를 가리키는 메타데이터일 뿐이고, 데이터를 별도로 적재하지 않습니다(schema-on-read).
-- S3 경로를 가리키는 외부 테이블 정의
CREATE EXTERNAL TABLE orders (
order_id BIGINT,
amount DOUBLE,
status STRING
)
PARTITIONED BY (dt STRING)
STORED AS PARQUET
LOCATION 's3://datalake-clean/orders/';💡 관련 이론: Athena는 스캔한 데이터량(TB당)으로 과금합니다. 따라서 비용 = 성능 = "얼마나 적게 스캔하느냐"입니다. 파티셔닝, 컬럼형 포맷, 압축이 비용과 속도를 동시에 좌우합니다.
파티션 키를 WHERE에 넣으면 해당 프리픽스만 스캔합니다(파티션 프루닝).