반응형
이번 동계 인턴을 하면서 AWS Athena에 대한 지식도 필요할 것 같아 공부하면서 정리하고자 블로그를 작성하였습니다. 보고 지적할 점이 있으면 말해주시면 감사하겠습니다.
AWS Athena란?
- Amazon Athena는 표준 SQL을 사용하여 Amazon S3(Amazon Simple Storage Service)에 있는 데이터를 직접 간편하게 분석할 수 있는 대화형 쿼리 서비스입니다. 즉, S3에 저장된 로그 데이터를 쉽게 분석하는 기능을 제공해주는 서비스이며 CSV,JSON,text 로그 등의 데이터를 분석하는데 도움을 줍니다.
- Athena에서는 테이블과 데이터 베이스는 단순히 메타데이터에 대한 정의를 저장하고 있는 저장소일 뿐입니다.
AWS Athena를 사용하는 이유
- Athena는 Amazon S3에 저장된 비정형, 반정형 및 정형 데이터를 분석하는 데 도움을 줍니다. 또한 간편한 데이터 시각화를 위해 Amazon Quicksight와 통합되었습니다. 이를 이용하여 보고서를 생성하거나 BI(비즈니스 인텔리전스) 도구 또는 SQL 클라이언트로 데이터를 탐색할 수 있습니다.
- Amazon Athena를 사용하면 데이터를 포맷하거나 인프라를 관리할 필요 없이 Amazon S3 직접 데이터에 대해 대화영 쿼리를 쉽게 실행할 수 있습니다.
- 서버리스 서비스로 인프라를 관리하지 않아도 됩니다. 또한 비용적은 측면에서 이점이 있어 탄력적으로 서비스를 사용하여 요금을 절약할 수 있습니다.
Database
- Athena에서는 테이블과 데이터 베이스는 단순히 메타데이터에 대한 정의를 저장하고 있는 저장소입니다.데이터를 직접 저장하지 않고, 데이터셋 별로 테이블이 존재해야 하며, 테이블의 스키마 기준으로 쿼리를 사용하여 작업합니다.
Table
- Athena는 DDL 및 DML 쿼리에서 대소문자 혼용을 허용하지만 쿼리를 실행할 때 이름을 소문자로 사용합니다. 따라서 Athena에서 대소문자를 통해서만 이름을 구별하지 않는 것이 좋습니다.
- table schema를 생성하면( CREATE TABLE 쿼리를 실행할 때 ), Athena는 AWS Glue Data Catalog에 스키마를 저장한 후, query 실행할 때 꺼내서 사용합니다.
- 이때 Athena는 Amazon S3의 데이터를 수정하지 않습니다. 따로 저장할 S3버킷을 설정하여 진행합니다.
- schema-on-read라는 접근 방식을 사용합니다. 즉, 쿼리를 실행할 때 스키마가 사용자의 데이터에 projection되어 데이터를 로드하거나 변환할 필요가 없습니다.
밑줄로 시작하는 이름
- 테이블을 만들 때 밑줄로 시작하는 테이블, 뷰 또는 열 이름은 백틱(`)으로 묶습니다.
CREATE EXTERNAL TABLE IF NOT EXISTS `_myunderscoretable`( `_id` string, `_index` string) LOCATION 's3://my-athena-data/'
숫자로 시작하는 테이블, 뷰 또는 열 이름
- SELECT, CTAS 또는 VIEW 쿼리를 실행하는 경우 숫자로 시작하는 테이블, 뷰 또는 열 이름과 같은 식별자를 인용 부호로 묶습니다.
CREATE OR REPLACE VIEW "123view" AS
SELECT "123columnone", "123columntwo"
FROM "234table"
Amazon S3에서 테이블 위치
- Athena에서 CREATE TABLE 쿼리를 실행할 때 AWS Glue 데이터 카탈로그에 테이블을 등록합니다.
- Amazon S3의 데이터에 대한 경로를 지정하려면 다음 예와 같이 LOCATION 속성을 사용합니다. 이때 Amazon S3의 location은 테이블을 나타내는 모든파일을 지정합니다.
- Athena는 지정한 Amazon S3폴더에 저장된 모든 데이터를 읽습니다. 따라서 Athena가 읽지 않도록 할 데이터가 있는 경우 Athena가 읽어야할 데이터가 있는 Amazon S3 폴더와 동일한 폴더에 해당 데이터를 저장하지 않아야 합니다.
- 파일 위치를 지정할 때 파일 이름, 밑줄, 와일드 카드 또는 glob 패턴을 사용하면 안됩니다.
- S3 버킷 경로에 s3.amazon.com 등의 전체 HTTP 표기법을 추가하면 안됩니다.
- "S#://test/ /folder" 등 빈 폴더를 사용하면 안됩니다.
예시)
s3://bucketname/folder/
s3://access-point-name-metadata-s3alias/folder/
잘못된 예시)
s3://path_to_bucket
s3://path_to_bucket/*
s3://path_to_bucket/mySpecialFile.dat
s3://bucketname/prefix/filename.csv
s3://test-bucket.s3.amazon.com
S3://bucket/prefix//prefix/
arn:aws:s3:::bucketname/prefix
s3://arn:aws:s3:<region>:<account_id>:accesspoint/<accesspointname>
https://<accesspointname>-<number>.s3-accesspoint.<region>.amazonaws.com
참고 사이트
https://docs.aws.amazon.com/ko_kr/athena/latest/ug/what-is.html
Amazon Athena란 무엇인가요? - Amazon Athena
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
'AWS' 카테고리의 다른 글
Amazon QuickSight란 ? (2) | 2023.02.03 |
---|---|
Amazon EC2란? & EC2 구축하기 (0) | 2022.12.28 |
Amazon S3란 ? (0) | 2022.12.27 |
[Amazon Redshift] Redshift 란? (0) | 2022.08.25 |