세그먼트 데이터를 시각화해보기

소개



올해는 TreasureData도 분석 기반으로서의 이용 용도가 크게 바뀐 해였다는 생각이 든다.
동시에 기반의 집계나 데이터 연계도 복잡해지고, 속도를 포함한 실시간성 등도 요구된다
일이 많아지고 있습니다.
그 중 DataConnector (Embulk)와 같은 데이터 연동을 원활하게하는 모듈
출시되어 서버리스, 코딩리스로 쉽게 데이터를 옮길 수 있게 되었습니다.
또한 Hadoop이 좋지 않은 업데이트 처리와 BI 도구 연계를 원활하게하기 위해 Datatanks
준비하고 속도를 담보하는 기능도 출시되었습니다.

우연히 이번 주에 Embulk의 Meetup에 참가해, 데이터 기반을 구축하고 있는 분들의 이야기나 친구와
이야기하고 있어, 의외로 Embulk를 시도하고 있다고 생각한 것과 각사 이용하기 위해서 고안하고 있는 부분
많다는 것을 느꼈습니다.
주로
* config 파일 관리(파일 수가 많거나 동적 파라미터 관리)
* 전체 처리를 포함한 워크플로
등 데이터를 이동시키기 위해 필요한 것을 각자 연구하고 있는 느낌이 들었습니다.

데이터 연계를 통해 세그먼트에서도 시각화 해 보겠다고 생각했지만 의외로 준비
하루 걸렸기 때문에 간단하게 데이터를 집계해 가시화하는 곳까지로 이번은 시간 만료였습니다.

세그먼트를 시각화하려면 ...



이번에 한 일



1, TreasureData에서 JSSDK로 수집하고 수집 된 데이터로 사용자 세그먼트를 쿼리로 집계합니다.
2, 1의 데이터를 DataTanks로 전송(ResultOutput 기능)
3, Eubulk를 사용하여 ElasticSearch로 전송 (Input이 PostgreSQL, Output이 ElasticSearch)
4, 그것을 Kibana로 시각화
(세그먼트 작성 쿼리 템플릿은 별도로 작성하여 올려 둡니다.)

내년에 할 수있게되면 좋다! (기대를 담아 마음대로 씁니다)



1, TreasureData상에서 세그먼트를 버튼으로 집계한다 (어떤 세그먼트의 집계 버튼이 있는 이미지)
2, 즉시 시각화
(1), DataConnectors로 Elasticsearch에 기입해, 곧 시각화. (eubulk-output-elasticsearch가 캡처되는지)
(2) 또는 보류 데이터 내에서 시각화

준비



Embulk 설치


$ curl --create-dirs -o ~/bin/embulk -L http://dl.embulk.org/embulk-latest.jar
$ chmod +x ~/bin/embulk
$ cat << 'EOF' >> ~/.bash_profile
export PATH=$PATH:$HOME/bin
EOF
$ source ~/.bash_profile

Embulk에서 사용할 플러그인 설치


$ embulk gem install embulk-input-postgresql
$ embulk gem install embulk-output-elasticsearch

Embulk에서 사용할 YML 만들기



config.yml
in:
  type: postgresql
  host: 00.00.00.00
  user: tank_user
  password: "XXXXXXXXXXXXXXXX"
  database: datatank
  query: |
    SELECT os,device,flag,count 
    FROM device_master
out:
  type: elasticsearch_2x
  nodes:
  - {host: localhost, port: 9300}
  index: device
  index_type: test
  bulk_actions: 200000

ElasticSearch 설치


https://www.elastic.co/downloads/elasticsearch
こちらのサイトより最新版をダウンロード。
最終的には2.1.1。

kibana 설치


https://www.elastic.co/downloads/kibana
上記のサイトで最新版をダウンロード
あとはtarを展開して適当に配置

그러나 embbulk-output-elasticsearch 버전 문제
깨달을 때까지 kibana + elasticsearch는 여러 번 버전을 바꿉니다.
가챠 가챠했습니다.

결과는 Embulk-plugin 쪽에서 다른 branch로 멀티 버전의 대응이
되고 있어, 이쪽을 페치 해 리컴파일이 필요 같습니다.
https://github.com/muga/embulk-output-elasticsearch/tree/support-multiple-versions_3gems
branchを切り替えてビルドし、
$  git co support-multiple-versions_3gems
$ ./gradlew gem
$ embulk gem install embulk-output-elasticsearch_2x-0.1.8.gem
$ embulk gem list

실행



1,Datatank에 Resultoutput



레코딩 설정





DB에 쓰기 실행





2, Datatank에 들어가 있는지 확인


$ psql -h XX.XX.XX.XX -U tank_user datatank
> select * from device_master

3, Embulk에서 Elasticsearch에 데이터 투입


$ embulk run config/config.yml



4, kibana에서 데이터 확인





끝에



사실은 지금까지 쿼리로 세그먼트를 만들기위한 로그를 정렬하거나 쿼리를 작성했기 때문에
정리하려고 생각했지만 Embulk를 알기까지 시간이 걸렸기 때문에 시각화
까지 되어 버린 것은 반성입니다.

다시 한 번 의심스럽게 생각하고 요청했지만,
* embulk-input-td는 무엇입니까?
(api로부터 상상하는데 데이터 결과를 돌려주는 api가 없기 때문인가? jobid 돌아온다... 그것을 기다려 데이터 세트를 취득하는 번거로운??)
* DataConnector의 elasticsearch는 곧 나올 것인가.
* 그리고 내년에는 TreasureData 내에 Viewer가 붙으면 좋네요!

좋은 웹페이지 즐겨찾기