목숨건데이터엔지니어
foot-data-engineering
목숨건데이터엔지니어
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • 취업과 기본기 잡기 (11)
      • Python (2)
      • 자료구조 (1)
      • 알고리즘 (1)
      • 운영체제 (2)
      • 네크워크 (1)
      • 데이터베이스 (1)
      • SQL (1)
      • Linux (1)
      • Docker (1)
    • 더 나은 엔지니어가 되기위해 (11)
      • (AWS) api-gateway, kinesis (1)
      • (AWS) MWAA (1)
      • Apache Spark (1)
      • Apache Airflow (1)
      • Apache Kafka (1)
      • Apache Flink (1)
      • Hadoop (1)
      • 알쓸신잡 (4)
    • 데이터와 손잡기 (6)
      • 머신러닝(sklearn) (1)
      • 딥러닝 (3)
      • 오디오 처리 (1)
      • 데이터 시각화 (1)
    • 코딩테스트 잡기 (1)
      • [BOJ] 문제풀이 (0)
      • [프로그래머스] 문제풀이 (0)
      • [HackerRank] SQL (0)
      • 코딩테스트 후기 (1)
    • 토이 프로젝트 (4)
    • 각종 기술 삽질하며 익히기 - onpremise (11)
    • 학습과정 잡동사니 (7)
      • 오답노트 (7)
    • 평소 궁금증 파헤치기 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 아직 한참 부족하고 부끄러운 나의 github 링크

인기 글

태그

  • #데이터수집
  • spark on centos7
  • scikit-learn
  • Tableau
  • 파이썬
  • logstash
  • Api-Gateway
  • spark to mysql
  • django
  • LIVY
  • filebeat
  • CTAS
  • 프로세스
  • jupyter
  • 쓰레드와 프로세스
  • flink
  • Elk
  • MWAA
  • ES
  • 서비쿼리
  • #데이터 수집 절차
  • 네트워크 스위치
  • kafka
  • 도커파일
  • aws builders online series
  • 멀티 프로그래밍
  • Kinesis
  • EMR
  • spark
  • spark with elasticsearch

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
목숨건데이터엔지니어

foot-data-engineering

[TLC trips record analysis 2편]  - Aurora mysql에 저장한 데이터 살펴보기(Presto,  Tableau, Athena)
토이 프로젝트

[TLC trips record analysis 2편] - Aurora mysql에 저장한 데이터 살펴보기(Presto, Tableau, Athena)

2022. 2. 9. 23:51

앞선 1편에서 실버데이터와 골드데이터를 RDS에 적재하였다. 이 데이터를 가지고 분석하는 방법엔 여러가지가 있지만 분산 SQL엔진인 Presto와 Presto기반으로 돌아가는 Athena를 살짝 다루어 보겠다. 그리고 BI툴인 태블로로 시각화를 진행해보겠다.

 


먼저 Athena가 Presto기반 엔진이라고 했는데 왜 둘다 사용하는지에 대해 얘기해보자면 앞선 1편에서 Aurora mysql 에 데이터를 저장했는데 Presto에서는 이기종 DB와의 join이 가능하여 S3데이터와 aggregation해서 사용할 수 있다. 하지만 Athena는 이기종DB와의 join을 제공하지 않고있고 무엇보다 Athena는 serverless이기에 저녁에 batch processing을 예약하여 돌리기에 적합하고 단일 db를 다룰경우 비용 효율적임을 알고 진행하면 유리하다.

 

Spark과 Presto의 차이는 spark은 메모리기반 엔진이기에 데이터를 cashing해와서 데이터를 메모리에 올려서 처리를 진행한다면 Presto는 분산 sql엔진이기에 말그대로 distribute된 sql을 각 worker node들에게 일을 시켜서 aggregation하는 방식이다. 속도차이는 눈에 띄게 큰차이가 나지 않는다.

1) Presto 

1-1) 먼저 emr환경에서 돌리기위해 다음과 같이 enable하여 emr클러스터를 생성한다. presto를 cli환경에서만 다루면 불편하기에 zepplin또한 이용한다.

 

1-2) cli 환경부터 다루어보기 위해 다음 마스터ec2에 접근한다. (+ 개발자는 Mac을 사용하도록 하자 ㅎㅎ 필자는 Mac의 소중함을 늦게 깨달았기에 Window를 사용하고있다. )

 

1-3) cli 환경에는 다음 루트에서 사용할 수 있다.

1-4) presto는 이기종 db와 join이 가능한데 mysql과 연동해 보겠다. 먼저 conf파일을 만들어야한다.

위 vi편집기에서 rds엔드포인트와 아이디 password를 입력한다.

 

1-5) 한 폴더 뒤로가서 config.properties의 두번째 line scheduler를 true로 바꿔준다. 그후

sudo systemctl restart presto-server명령어도 재시작 해준다.

 

1-6) 그후 다음과 같이 mysql에 접속이 가능하고 hive테이블과도 join이 가능하다.

 

근데 아무래도 분석가들이 이런 cli환경에서 분석하기엔 버거운 부분이 있으니 제플린에서 환경을 구성해보겠다.

 

1-7) 먼저 제플린은 다음 URL로 들어갈 수 있다.

1-8) 제플린에 들어가서 인터프린터를 create에서 보면 jdbc가 없는걸 볼수 있다. 제플린에서 presto나 mysql을 연결할때는 jdbc가 필요한데 cli 환경에서 설치후 돌아오겠다.

 

 

1-9) cli 환경에서

  •  sudo su -
  • cd /usr/lib/zeppelin
  • ./bin/install-interpreter.sh --name jdbc --artifact org.apache.zeppelin:zeppelin-jdbc:0.10.0
  • 그다음 systemctl restart zepplin 해준다. (당연하지만 적용하기 위해)

위 세줄을 진행하면 jdbc가 설치된다.

 

1-10) 그다음 presto 접속 드라이버를 설치해준다.

1-11) 다음과 같이 돌아와 세팅하고 저장해준다.

1-12) 이렇게 제플린 노트북 환경에서 인터프리터를 적용완료하였다.

 

1-13) cli환경에서 했던 작업들이 편한 환경에서 분석가능하다. ^-^ 제플린 환경에서 분석을 진행하면 여러 시각화 차트들이 편하게 제공된다.

 

 

2) Tableau

2-1) 태블로 설치는 사이트에가서 진행하면 된다. 필자는 평가판 2주를 사용한다.. ㅎㅎ 평가판이아닌 유료로 사용하면 상관없지만 public 버전은 mysql, aws서비스와 연결안되니 사용하지 못한다. 기본csv파일만 연동가능하니 s3에 csv파일을 다운받아 사용해도 무방하다. 단, 연동에 초점이 맞추어져 있기에 평가판을 사용한다.

 

2-2) 연동 driver는 아래 사이트에서 다운가능하다.

https://www.tableau.com/support/drivers

 

2-3) 태블로를 키면 다음과 같이 서버에 연결 리스트를 볼 수 있다.

 

2-4) 그럼 다음과 같이 연결후 drag & drop으로 편하게 시각화 가능하고

연결을 추가하여 마찬가지인 drag & drop으로 join이 가능하다.

그리고 태블로에 가입하니 무료 교육영상도 제공하니 필요에따라 즉각 적용 가능해보인다.

링크: https://public.tableau.com/ko-kr/s/resources?utm_campaign=2018128_TPublic_NRTR_APAC_ko-KR_2019-10-10_T2-Learning&utm_medium=Email&utm_source=Eloqua&domain=naver.com&eid=CTBLS000033586265&d=7013y000000vYh9&elqTrackId=1774ea1498b44e2cbd3e9878220981ed&elq=fe3d825f8e7e4e279669032a460632ed&elqaid=40283&elqat=1&elqCampaignId=39290 

 

리소스

.l-content > .page-title {display:none;} 리소스 이용 방법 동영상 다양한 자료를 통해 사용을 시작하거나 기술을 한 단계 높일 수 있습니다. [block:quicktabs=overview_resources] 추가적인 한국어 교육 동영상이

public.tableau.com

 

2-5) 연동후 테이블을 가져올때 연결 방식이 라이브 방식과 추출방식 두가지가 있는데 라이브 방식을 그때 그때마다 서버에 쿼리를 날려 가져오는 식이고 추출방식은 데이터를 다운로드 받아 내려서 사용하는 방식이다 그러므로 때에따라 Athena를 연동하여 사용해도 비용 효율적이다.

 

 

3) Athena

3-1) athena는 너무나 간단하다 presto엔진 기반 serverless이기에 다음과 같이 glue에 data catalog가 저장되어있으면 쿼리 던지기가 가능하다.

 

 

Redshift도  다룰 수 있지만 aws 테스트를하다보니 ㅎㅎ 요금이 야금야금 늘어나기 시작했기에 우선 다소 비싼 서비스는 pass하겠다 ㅎㅎ... 뭐든 필요에따라 사용 할 서비스를 잘 알아보고 신중하게 정하면 된다.

 

 

 


이제 다음엔 최종 TLC trips record 3편을 다음에 진행하겠다 ^_^

 

 

 

 

 

'토이 프로젝트' 카테고리의 다른 글

[TLC trips record analysis 3편] - EMR을 활용한 TLC taxi data 분석 및 MWAA로 워크플로우 관리  (0) 2022.02.18
[TLC trips record analysis 1편] - EMR, AWS Aurora mysql, Glue 활용 (데분을 위한 데엔)  (0) 2022.02.09
Api-Gateway, Kinesis, S3 데이터 전송하기(데이터수집 on aws)  (0) 2022.02.06
    '토이 프로젝트' 카테고리의 다른 글
    • [TLC trips record analysis 3편] - EMR을 활용한 TLC taxi data 분석 및 MWAA로 워크플로우 관리
    • [TLC trips record analysis 1편] - EMR, AWS Aurora mysql, Glue 활용 (데분을 위한 데엔)
    • Api-Gateway, Kinesis, S3 데이터 전송하기(데이터수집 on aws)
    목숨건데이터엔지니어
    목숨건데이터엔지니어

    티스토리툴바