본문 바로가기

⭐ AWS/Kinesis Data Stream

Kinesis Data Streams - Athena를 통한 데이터 분석

1. Athena를 이용해서 데이터 분석 하기, 아테나를 시작하면 아래와 같은 초기 화면을 볼 수 있다.

2. 처음 방문 하는 경우라면, set up a query result location in Amazon S3 를 클릭해서 Athena의 쿼리 결과를 저장할 s3 위치를 설정합니다. s3 위치는 버켓 이름이 겹치지 않도록 임의 이름을 지정하여 저장 합니다.

3. 이제 데이터베이스를 생성해 보도록 하겠습니다. 첫번째로 : CREATE DATABASE mydatabase; 쿼리를 실행 합니다. 두번째로 Run query를 실행합니다. 세번째로 왼쪽에 데이터베이스 탭을 클릭하면 방금 우리가 생성한 mydatabase를 선택할 수 있습니다.

CREATE DATABASE mydatabase;

4. 자 이번에는 데이터베이스를 생성 했으니, 테이블을 생성해 보도록 하겠습니다. 상단 탭에 + 모양을 클릭하여 New query 창을 하나 띄웁니다. 아래의 쿼리를 입력하고, Run query를 실행 합니다. (PARTITIONED BY는 현재를 기준으로 값을 추출한다.)

CREATE EXTERNAL TABLE `mydatabase.retail_trans_json`(
  `invoice` string COMMENT 'Invoice number', 
  `stockcode` string COMMENT 'Product (item) code', 
  `description` string COMMENT 'Product (item) name', 
  `quantity` int COMMENT 'The quantities of each product (item) per transaction', 
  `invoicedate` timestamp COMMENT 'Invoice date and time', 
  `price` float COMMENT 'Unit price', 
  `customer_id` string COMMENT 'Customer number', 
  `country` string COMMENT 'Country name')
PARTITIONED BY ( 
  `year` int, 
  `month` int, 
  `day` int, 
  `hour` int)
ROW FORMAT SERDE 
  'org.openx.data.jsonserde.JsonSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat'
LOCATION
  's3://aws-analytics-immersion-day-20210613/json-data' #버킷 명은 최초에 데이터가 쌓이는 위치를 지정해줘야 함.

- 추가로 AWS Glue에서 데이터 카달로그를 확인 할 수 있다. (파티션 키 확인가능)

- AWS Glue란 ?
ETL서비스로 AWS에 있는 RDS, Dynamodb, S3, Redshift 등에 있는 데이터를 불러와주는 기능을 하는 어플리케이션 입니다.

- ETL이란?
Extract Transform Load 의 약자입니다.

- 쿼리를 입력하고 실행하니, 왼쪽 테이블에 retail_trans_json (Partitioned) 이라는 테이블이 하나 생성된 것을 확인 할 수 있습니다.

5. 파티션 데이터 로드, + 모양의 New query 를 실행하고, 명령어 : MSCK REPAIR TABLE mydatabase.retail_trans_json 를 실행하여 파티션 데이터를 로드합니다.

MSCK REPAIR TABLE mydatabase.retail_trans_json

6. MSCK REPAIR TABLE mydatabase.retail_trans_json 명령어가 정상적으로 실행된 모습, 테이블 리뷰를 해보면 정상적으로 데이터가 쌓인것을 확인 할 수 있다.

7. 이제 쌓인 데이터를 직접 쿼리를 수행하여 결과를 확인해 보자

SELECT *
FROM retail_trans_json
LIMIT 10

- 다음 시간에는 아마존 퀵사이트를 통한 데이터 시각화에 대해서 알아보자.