cloud bee

csv data athena 쿼리 본문

AWS/data

csv data athena 쿼리

who you 2023. 1. 7. 13:34

동작과정을 설명하는 사진이다.

 

다이어 그램은 위 사진과 같이 구성되어 있다.

 

총 3가지로 구성할 것이다.

1. S3를 생성하여 demo.csv file을 업로드한다.

2. glue catalog와 glue crawler을 생성하여 실행할 것이다.

3. 이제 크롤링된 데이터를 바탕으로 athena를 통해 쿼리를 진행할 것이다.

 

우선 먼저 S3를 생성하도록 해주자. windows powershell이나 cmd를 준비하여 rootcsv파일을 통해 "aws configure" 명령어를 통해 사용자 인증을 해주도록 한다.

 

이제 cmd에서 다음과 같은 명령어를 사용해 S3를 생성하도록 해준다.

aws s3 mb s3://demo-korea-s3

S3 버킷 생성

 

이제 S3를 생성하였다면 아래 csv파일을 다운로드하여 S3에 업로드하도록 해준다.

amazon web service의 S3로 접속하여 demo-korea-s3에 들어가 준다. 이제 사진과 같이 드래그를 하여 S3에 업로드한다.

demo.csv
0.63MB
파일 업로드

 

이제 업로드를 하였다면 glue console에 접속하여 glue crawler을 생성해 주도록 한다.

다음 링크에 들어가서 glue crawler을 생성하도록 한다.

https://ap-northeast-2.console.aws.amazon.com/glue/home?region=ap-northeast-2#/v2/home 

 

https://ap-northeast-2.console.aws.amazon.com/glue/home?region=ap-northeast-2#/v2/home

 

ap-northeast-2.console.aws.amazon.com

 

우선 먼저 database부터 생성해주어야 한다. glue console에서 database 항목에 들어가 사진과 같이 생성해 주도록 한다.

Add database를 클릭하여 생성한다.

데이터 베이스 생성
데이터 베이스 생성 2

Name을 demo-db로 지정하고  Create database란을 선택하여 database를 생성해 주도록 한다.

 

생성하였다면 이제 크롤러를 생성해 주도록 할 것이다. glue console에서 crawlers로 이동하도록 한다.

그리고 이동하였다면 create crawler 버튼을 눌러 사진과 같은 과정으로 crawler을 생성해 주도록 한다.

 

크롤러 생성

crawler details 단계에서 Name을 demo-crewler로 지정한 다음 Next를 선택해 다음 단계로 진입해 준다.

 

Add data source를 설정해 준다. 아래 세부사양과 같이 구성해 주도록 한다.

-----------

Data source: S3

Location of S3 data: In this account

S3 path: s3://demo-korea-s3         #방금 생성하였던 S3 경로를 선택해 준다.

Subsequent crawler runs: Crawl all sub-forders

------------

S3 경로 지정

다 선택을 하였다면 Add an S3 data source 버튼을 눌러준다. 이후 Next 버튼을 누른다.

 

 

임의로 Existing IAM role에서 Create new IAM role를 통해 IAM 권한을 생성하고 연결해 준다. 연결을 하였다면 Next 버튼을 눌러 다음 항목으로 진입해 준다.

IAM 지정

 

Output configuration을 설정한다. Target database는 아까 생성하였던 database인 demo-db를 선택한다.

Table name prefix는 따로 설정하지 않는다.

 

Crawler schedule 부분에서 Frequency 부분을 On demand (주문형) 방식으로 지정해 준다.

주문형 방식

Advanced options에서 사진과 같이 선택해 준다. Add new columns only, Update all new and existing partitions with metadata from the table을 선택한다. 이후 Next를 눌러 Create crawler 버튼을 눌러 crawler을 생성해 주도록 한다.

옵션 선택

 

Run crawler 버튼을 눌러 crawler을 실행하도록 한다.

크롤러 실행

tables란에 들어가면 정상적으로 tables가 실행된 것을 확인할 수 있다.

테이블 확인

테이블 편집을 하여 Serde 직렬화 라이브러리를 변경해 준다.

"org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe"를 "org.apache.hadoop.hive.serde2.OpenCSVSerde"로 변경해 준다.

라이브러리 변경

 

이제 athena를 통해 query를 진행해 볼 것이다. athena console로 접속은 아래 링크로 들어가 준다.

https://ap-northeast-2.console.aws.amazon.com/athena/home?region=ap-northeast-2# 

 

https://ap-northeast-2.console.aws.amazon.com/athena/home?region=ap-northeast-2

 

ap-northeast-2.console.aws.amazon.com

 

query를 진행해 본다.

 

<전체 카운트 조회>

select count(*) from demo_korea_s3

결과 확인

 

< 카테고리가 Milk or Egg인 개수 조회 >

select count(category) from demo_korea_s3
where category='Milk' or category='Egg'

결과 확인

 

< 가장 큰 nutrient data bank number >

SELECT MAX("nutrient data bank number") FROM demo_korea_s3

결과 확인

Comments