WiseN

Apache Superset으로 Athena 쿼리 결과 시각화

Jan 31,2019   |   AWS

작성자_김명수

페이스북 공유하기 트위터 공유하기
Blog thumbnail

여기서 다루는 내용


· 간단 소개
· 사전 준비
· 연동 확인
· 마무리


 

이번 시간에는 대규모 분산환경에서 수평 확장 가능한 오픈소스인 Apache Superset으로 presto 엔진을 기반으로 하는 AWS Athena의 쿼리 결과를 시각화 해보도록 하겠습니다.

 

먼저 Superset을 준비하고, 샘플 데이터를 AWS Glue data catalog에 등록한뒤 이를 AWS Athena와 연동하여 간단한 시각화를 해보겠습니다.

 




간단 소개









    • AWS Athena

      • 서버리스 기반 완전 관리형 서비스

      • Presto 기반 표준 SQL 지원 대화식 쿼리 서비스

      • Amazon S3 기반 데이터 스토어

      • AWS Management Console, API, ODBC/JDBC 지원

      • 쿼리당 스캔한 데이터 비용 지불 ($5/TB)

      • 제품 세부 정보: Link



    • AWS Glue

      • 클라우드 데이터 추출, 변환 및 로드 (ETL) 서비스

      • 서버리스 기반 완전 관리형 서비스

      • 크롤러를 통한 자동 스키마 검색

      • 통합된 데이터 카탈로그 제공

      • 개발용 엔드 포인트 및 노트북(Notebooks) 제공

      • Scala, Python 언어 및  Apache Spark용 ETL Job 코드 생성 및 스케줄 실행

      • 단일 DPU : 4vCPU 및 16GB Memory 제공

      • 크롤러, ETL 작업 및 개발용 엔드 포인트 모두 DPU 시간당 초 단위 청구

      • 제품 세부 정보 : Link



    • Apache Superset

      • Apache Incubating Project

      • Airbnb에서 오픈소스로 공개한 BI Tool

      • 고가용성 설계 및 대규모 분산 환경 수평 확장 설계 가능

      • Dashboard 생성 및 공유 가능

      • SQLAlchemy를 통한 database 연결

      • 제품 세부 정보: Link

      • Github: Link






 

 




사전 준비






:: Apache Superset 준비

Superset은 EC2 Amazon Linux에 설치가능하며 Docker 환경을 지원합니다.

Apache Superset 공식 설치 및 설정 가이드 문서를 참고하여 설치를 합니다.

설치 완료 후 8088 port로 접근하면 아래 이미지와 같이 로그인 화면을 볼 수 있습니다.



 

:: 샘플 데이터 준비


본 포스팅에서는 샘플 데이터를 S3에 업로드하여 조회해보겠습니다.

먼저 movielens에서  latest datasets 데이터를 다운로드 받습니다.

압축을 해제하면 README.txt 파일 및 CSV 파일들이 보입니다.

README.txt, genome-scores.csv, genome-tags.csv, links.csv, movies.csv, ratings.csv, tags.csv

S3에 해당 CSV 파일에 해당되는 각각의 폴더를 생성하여 업로드 합니다.

 



 

 

:: Glue data catalog 생성


위에서 업로드한 샘플 데이터에 대해 Glue Crawler를 실행하여 자동으로 data catalog에 등록이 되도록 하겠습니다.

Glue crawler에서 신규 crawler를 생성하여 실행하면 아래와 같이 6개의 테이블을 자동으로 등록해줍니다.



 

Glue data catalog를 보면 아래와 같이 생성된 테이블 확인이 가능합니다.



 

AWS Glue 서비스가 궁금하시면 아래 저희 블로그 참고 바랍니다.

AWS Glue 간단 사용기 - 1부
AWS Glue 간단 사용기 - 2부
AWS Glue 간단 사용기 - 3부

 

:: Athena 조회


Athena에서 Glue data catalog에 등록된 테이블을 조회해서 정상적으로 조회가 되는지 확인해봅니다.



 

 




연동 확인






:: Superset Database 등록


Superset Web UI 상단에서 Sources를 눌러 Databases를 클릭합니다.



 

우측 상단 + 아이콘 버튼을 눌러 새로운 Database 등록 페이지로 이동합니다.



 

Database 명을 입력하고 SQLAlchemy URI를 입력합니다.



 

SQL Lab 사용을 위해 Expose in SQL Lab을 체크합니다.



 

 

하단 Save 버튼을 눌러 movielens Database 등록을 완료 합니다.



 

:: Superset 테이블 등록


Superset Web UI 상단에서 Sources를 눌러 Tables를 클릭합니다.



 

우측 상단 + 아이콘 버튼을 눌러 새로운 Tables 등록 페이지로 이동합니다.



 

해당하는 정보를 넣고 테이블을 등록합니다.



 

하단 Save 버튼을 눌러 table 등록을 완료 합니다.



 

나머지 table 들도 등록 합니다.



 




데이터 조회 및 Dashboard 생성






:: Dashboard 생성


Superset Web UI 상단에서 Dashboards를 누릅니다.

우측 상단 + 아이콘 버튼을 눌러 새로운 Dashboard 생성 페이지로 이동합니다.



 

Title 및 기타 정보를 입력하고 Save 버튼을 누릅니다.

 

:: Chart 생성


Superset Web UI 상단에서 Charts를 누릅니다.

우측 상단 + 아이콘 버튼을 눌러 새로운 Chart 등록 페이지로 이동합니다.



 

datasource 및 visualization type을 선택합니다.

여기서는 위에서 생성한 tags_csv 테이블을 선택합니다.



 

 

GROUP BY 에 tag를 선택하여 tag별 개수를 확인해보겠습니다.

Group by에 tag를 선택하고 Metrics에는 COUNT(tag)를 Percentage Metrics에도 COUNT(tag)를 선택 합니다.



 

좌측 상단 Run query를 눌러 실행하면 아래 그림과 같이 결과가 나옵니다.



 

 

좌측 상단 Save 버튼을 눌르면 chart 저장 팝업이 생성됩니다.

chart 제목과 위에서 생성한 dashboard를 선택합니다.



 

Save & go to dashboard를 눌러 저장한 dashboard로 이동합니다.



 

Athena 콘솔로 잠시 이동해서 History를 확인해보면 Superset에서 Athena에 쿼리 요청한 부분을 확인 할 수 있습니다.



 

 

:: SQL Lab 쿼리 생성


Superset 에서는 SQL Editor를 사용해서 데이터 조회를 지원합니다.

Superset Web UI 상단에서 SQL Lab을 누르고 SQL Editor를 클릭합니다.



 

SQL 문을 입력하고 Run Query를 눌러 쿼리가 가능합니다.



 

Explore를 눌러 해당 쿼리를 Chart 형식으로 추가하여 시각화 할 수도 있습니다.



 

아래 이미지와 같이 visualization type을 눌러 원하는 type을 선택하여 시각화가 가능하며, 해당 chart를 dashboard에 등록할 수 있습니다.

 




마무리






Dashboard 에서 athena를 자주 호출하면 비용적인 부분을 고려 안할 수 가 없기 때문에 이부분 유념하면 좋을 것 같습니다.

혹시 AWS EMR의 presto와의 연동이 궁금하다면 아래 링크 참고 바랍니다.

AWS EMR Series - Apache Superset으로 presto 쿼리 결과 시각화

이상으로 Superset에서 Athena 데이터를 조회하여 결과를 시각화 해 보았습니다.