본문 바로가기

⭐ AWS/AWS Glue

AWS Glue를 활용한 데이터 시각화(AWS QuickSight) 구현

# 구현 아키텍처

데이터 레이크란?
데이터 레이크는 다양한 유형의 대량 데이터를 처리해야 하는 과제를 해결하는 데이터 저장 및 분석 방법이다.
데이터 레이크를 사용하면 정형 및 비정형 데이터 등 모든 데이터를 중앙 집중식 레포지토리 한 곳에 저장 할 수 있다. 
데이터를 있는 그대로 저장할 수 있으므로 데이터를 사전 정의된 스키마로 변경할 필요가 없어진다.

- AWS Glue를 사용하여 아마존 S3에서 데이터를 크롤링하고 다른 AWS 서비스에서 사용 가능한 메타 데이터 저장소를 구축하는 방법에 대해서 알아보자.

- 일단 AWS Glue의 기능?
AWS Glue는 까다롭고 시간이 많이 소요되는 데이터 ETL 작업을 간소화 및 자동화 하는 종합 관리형 서비스 이다.

- AWS Glue의 동작 방법?
AWS Glue는 데이터 소스를 크롤링하고 CSV, Apache Parquet, JSON 등 널리 사용되고 있는 데이터 형식과 유형에 대해 사전 구축된 분류자를 사용하여 데이터 카탈로그를 생성한다.

- 데이터 카탈로그란?
데이터베이스 카탈로그는 데이터베이스의 개체들에 대한 정의를 담고 있는 메타데이터들로 구성된 데이터베이스 내의 인스턴스이다. 기본 테이블, 뷰 테이블, 동의어(synonym)들, 값 범위들, 인덱스들, 사용자들, 사용자 그룹 등등과 같은 데이터베이스의 개체들이 저장된다.

- Amazon S3 데이터 레이크
AWS Glue는 Amazon S3 데이터 레이크의 필수 구성 요소이며, 최신 데이터 분석을 위한 데이터 카탈로그 및 변환 서비스를 제공
여기서는 데이터베이스 정의, Amazon S3 버킷에서 데이터를 탐색하도록 크롤러 구성, 테이블 생성, Parquet으로 CSV 파일 변환, Parquet 데이터에 대한 테이블 생성, Amazon Athena를 사용하여 데이터 쿼리 등과 같은 작업진행한다.

- 데이터 처리 과정 : 데이터 검색 → 데이터 변환 데이터 추가  데이터 분석 순서로 진행한다.

- 작업 흐름 :
1. S3에 샘플 데이터 저장
2. AWS Glue 크롤링 (샘플 데이터를 AWS Glue 테이블에 저장)
3. AWS 아테나 및 레드쉬프트에서 분석을 위해 Parquet 형식으로 S3에 저장
4. AWS Glue 크롤링 (S3에 저장된 Parquet 데이터를 AWS Glue 테이블에 저장)
5. AWS Athena를 활용한 데이터 조회
6. AWS QuickSight를 활용한 데이터 시각화

1. 데이터 검색 및 크롤링

- 데이터를 검색하려면 먼저 데이터베이스를 추가 해야한다.
- AWS Glue 서비스로 이동하여 데이터 베이스를 추가하자.
- online ratail 이라는 데이터 베이스를 생성한다.

- 데이터 베이스를 추가 후 onlie retail 이라는 데이터베이스안에 테이블을 생성한다.
- 테이블을 생성할때 여러 메뉴가 존재 한다. 하나씩 살펴보면,
1. 크롤러를 사용하여 테이블 추가 : s3에 저장된 데이터를 크롤링하여 새로운 테이블을 생성한다.
2. 테이블을 수동으로 추가 : AWS Glue에 생성된 테이블을 참조하여 생성한다.
3. 스키마를 수동으로 추가 : 기존에 생성된 스키마를 참조하여 생성한다.

- 크롤러를 사용하여 테이블 추가를 클릭하여 online retail 이라는 데이터베이스에 online retail 이라는 테이블을 추가한다. 

- S3에 있는데이터를 가져와야 하므로 아래와같이 설정 후 다음을 클릭하여 다음으로 넘어간다.

- 증분 데이터만 클롤링을 할 경우 아래와 같이 Crawl new folders only 옵션을 체크 해주어야 한다.
- crawl changed folders identified by amazon s3 event notifications 옵션은 새로운 폴더가 생기는 이벤트가 발생할때 크롤링하게끔 구현이 가능하다.

- 아마존 S3 버킷에 있는 샘플 데이터를 크롤링하여 AWS Glue 테이블로 저장하는 옵션 이다.

- 다른 데이터 스토어 추가는 아니오를 선택 후 다음으로 넘어간다.

- IAM 역할을 사용 환경에 맞게 설정 후 다음으로 넘어간다.

- 빈도에서 온디맨드 실행을 선택한다. 온디맨드를 선택 할 수도 있고, 스케줄에 따른 실행도 가능하다.

- 데이터베이스에서 이전에 생성한 online retail을 선택한다.

- 크롤러의 출력구성에서 → 새 열만 추가 를 체크하면 크롤링시 신규 열에 대해서만 추가된다.

- 모든 설정이 완료 되었다. 마침을 클릭하여 설정을 완료하자.

- 크롤링을 할 준비가 되었다. 크롤러 실행을 클릭하여 설정된 정보대로 크롤링을 진행한다.

- 크롤링이 끝나면 AWS Glue에 data라는 테이블 한개가 추가되어 있다. 

- 왼쪽 메뉴에서 테이블을 선택 후 데이터를 확인해보자. 스키마 정보, 속성 및 기타 정보를 확인 할 수 있다.

2. CSV에서 Parquet 형식으로 데이터 변환

- Apache Parquet는 AWS 아테나, 레드쉬프트 스펙트럼과 같은 AWS 분석 서비스에 적용 가능한 컬럼 형식이다.

- AWS Glue 메뉴중 ETL에 작업을 선택 후 작업 추가를 선택합니다.

- 작업 속성 구성에서 적절한 이름을 입력하고  IAM role에서 GlueService 역할을 선택 후 스크립트를 저장할 S3경로를 입력, 임시 디렉터리에 대한 S3 디렉터리 입력 합니다.

- 데이터 원본 선택에서 이전에 저장한 AWS Glue 데이터 테이블을 선택 합니다.

- 변환 유형 선택에서 스키마 변경을 선택 후 다음으로 넘어 갑니다.

- 데이터 대상 선택에서 데이터 대상에서 테이블 생성 선택 > Parquet 형식으로 선택 > 결과를 저장할 새 위치 선택

- 스키마가 정상적으로 매핑 되었는지 확인 후 하단에 작업 저장 및 스크립트 편집 클릭

- 작업을 확인한다. 이 화면에서 작업을 편집, 저장 및 실행 할 수 있다. 
- 이 스크립트는 AWS Glue에서 자동으로 생성하였고, 필요한 경우에는 스크립트를 직접 작성하여 돌릴수도 있다.

- 저장 후 작업 실행을 클릭하여 작업을 실행 한다.

- 작업 실행 후 위에서 지정한 S3경로로 이동해보면 아래와 같이 Parquet형식으로 구성된 데이터가 생성되어 있다.

3. Parquet 테이블 및 크롤러 추가

- 작업이 완료되면 크롤러를 사용해 Parquet 데이터에 대한 새 테이블을 추가한다.

- 크롤러 정보를 추가한다.

- 크롤러 소스를 선택 한다.

- 이전에 Parquet으로 변환한 S3 저장소를 선택 후 다음을 클릭하여 넘어간다.

- 다른 데이터 스토어 추가는 아니오를 선택 후 다음으로 넘어간다.

- IAM 역할을 선택 후 다음을 클릭하여 이동한다.

- 온디맨드 실행을 선택 후 다음으로 넘어간다.

- 크롤링 후 저장할 테이블을 입력한다.

- 최종적인 크롤러 정보를 확인한다.

- 마침을 클릭하면 아래와 같이 2개의 크롤러가 생성된것을 확인 할 수 있다.
- 크리고 online retail Parquet 이라는 크롤러를 실행시키면 AWS Glue 테이블에 추가로 테이블이 생성되는것을 확인 할 수 있다.

- AWS Glue 테이블 확인 → Parquet 크롤링 테이블이 추가되어 2개의 테이블을 확인 할 수 있다.

4. Amazon Athena를 사용하여 데이터 분석

- 아마존 아테나는 표준 SQL 문법을 사용하여 아마존 S3에 저장된 데이터를 분석 할 수 있는 대화식 쿼리 서비스 입니다.
- 아마존 아테나를 사용하여 CSV 데이터를 쿼리 할 수 있습니다. 하지만 Parquet 형식의 데이터 형식을 활용하면 시간과 비용을 줄일 수 있는 장점이 있습니다.

- Athena 서비스로 이동합니다.
- 아테나 서비스로 이동하면 아래와 같이 online retail 이라는 데이터베이스에 2개의 테이블이 존재합니다.
- data 테이블은 아마존 S3에서 AWS Glue 테이블로 크롤링 되어진 테이블이고, 나머지 datapipeline 테이블은  AWS Glue 테이블에 저장된 데이터를 Parquet 형태로 변형하여 저장한 테이블 입니다.

- 쿼리 결과를 저장할 S3 버킷을 선택 합니다.

- 쿼리를 실행하여 결과를 확인 합니다.

SELECT * FROM "online retail"."data" limit 10;

- 이상 AWS Glue를 활용하여 데이터를 저장 및 조회하는 방법에 대해서 알아 보았습니다.

5. AWS QuickSight를 활용한 데이터 시각화

- 비지니스 분석 서비스인 아마존 퀵 사이트를 통해 데이터를 탐색하고 시각화 하는 작업을 진행 합니다.

- QuickSight 서비스로 이동하여 우측 상단에 New analysis 버튼을 클릭합니다.

- 좌측 상단에 New dataset을 클릭하여 새로운 데이터 셋을 불로 옵니다.
- 우리는 최종적으로 AWS 아테나를 통해 데이터 필터링 및 어그리게이션 등을 수행할 예정이므로 BI를 위한 최종 데이터 소스는 Athena를 선택하도록 합니다.

- 데이터 시각화를 구현할 데이터 소스를 선택 합니다.
- 우리는 여기서 위에서 작업한 AWS Glue를 통해 Parquet형태로 변형한 데이터 셋을 선택 합니다.

- 시각화할 테이블을 선택합니다.
- AWS Glue에서 Parquet으로 변환한 테이블을 선택 합니다.

- 만약 S3에 대한 접근이 거부될경우 아래의 "더보기" 를 클릭하여 보안 및 접근권한을 설정 해주어야 한다.

더보기

- 쿽사이트에서 우측상단에 자신의 ID를 클릭하면 아래와 같은 메뉴가 나타난다.
- 여기서 QuickSight 관리를 클릭하여 관리 화면으로 이동한다.

-  왼쪽 메뉴에서 보안 및 권한을 클릭하여 설정을 수행한다.
- 보안 및 권한에서 하단에 Manage 를 클릭하여 퀵사이트에서 접근 가능한 설정을 수행한다.

- 관리 화면에서 S3 버킷 선택을 클릭하여 접근을 허용할 S3 저장소를 선택한 뒤 

- 퀵 사이트 계정에 연결된 S3 버킷에서 시각화할 데이터가 저장된 S3 버킷을 선택 후 완료를 클릭하여 보안 및 권한 설정을 마친다.

- 데이터 세트 생성 완료하기 화면에서 아래와 같이 설정 후 시각화를 클릭하여 데이터를 시각화 한다.

- 시각화 화면으로 들어오면 가장 처음으로 데이터를 로딩한다. 데이터를 로딩하는 시간은 S3에 저장된 데이터의 수만큼 증가하거나 줄어든다. 데이터가 많으면 데이터를 로딩하는 시간이 늘어나고 데이터가 작으면 데이터를 로딩하는 시간이 줄어든다.
- 데이터를 가져오는데에는 약 30초의 로딩 시간이 소요되었으며, 약 100만건의 데이터를 로딩하였다.

6. AWS QuickSight 대시보드 작성 방법

- 데이터를 로딩 후 초기화면은 아래와 같을 것이다.

- 시각화 하는 방법은 매우 간단하다.
- 원하는 유형의 그래프를 아래에서 선택하고 해당 그래프에 표현하고자 하는 항목을 좌측 리스트에서 선택만 해주면 비지니스에 유의미한 다양한 대시보드를 구성할 수 있습니다.
- 원하는 유형의 그래프: ②, 해당 그래프에 표현하고자 하는 항목: ①, 다양한 대시보드: ③

- 아마존 아테나에서 조회한 쿼리를 바탕으로 시각화를 하는경우, 테이블 선택 화면에서 "사용자 지정 SQL 사용" 클릭

- 100개의 데이터 리스트를 조회하는 쿼리를 입력 합니다.

SELECT * FROM "online retail"."datapipeline_test" limit 100;

- 아래와 같이 쿼리를 입력 후 쿼리 확인 을 클릭하여 다음 화면으로 넘어 갑니다.

- 쿼리가 정상적으로 검증되면 다음 화면으로 이동합니다.
- 시각화를 클릭하면 위에 조회한 쿼리를 기반으로 100개의 리스트에 대한 시각화 화면이 표시 됩니다.

- 정상적으로 데이터를 로딩할 경우 아래와 같은 메세지가 출력 된다.

- 로딩한 100개의 row 데이터를 기반으로 시각화 수행

AWS Glue를 활용한 데이터 시각화 구현 (AWS QuickSight 사용)

- 추가로 수행할 작업이 있으면 또 덧붙여 진행 해야겠다...
- 일단은 여기까지...

- 끝 -

'⭐ AWS > AWS Glue' 카테고리의 다른 글

AWS Glue에서 ETL 작업 시 고려사항  (0) 2022.01.27
데이터 분석을 위한 AWS 서비스 별 분류  (0) 2022.01.06