인턴기록지
[Druid] SQL ingestion spec - postgresql (postgresql database data) on docker 본문
[Druid] SQL ingestion spec - postgresql (postgresql database data) on docker
인턴신분현경이 2020. 11. 26. 18:34Druid version = druid 0.19.0
드! 디! 어!
postgresql 의 테이블의 데이터를 드루이드에 넣는 것을 할 수 있 게 되 었 다 ~ ~ ~~~
개발서버의 도커에서 드루이드를 올려서 사용했다. 드루이드의 bin 파일이 아닌 src 소스 파일을 다운받아서 압축풀고 실행해 주었다.
도커에서 드루이드 실행방법은 밑과 같다.
hklee@dar-dev-01:~/apache-druid-0.20.0-src$ cd distribution/
hklee@dar-dev-01:~/apache-druid-0.20.0-src/distribution$ ls
asf-release-process-guide.md bin docker pom.xml src
hklee@dar-dev-01:~/apache-druid-0.20.0-src/distribution$ cd docker/
hklee@dar-dev-01:~/apache-druid-0.20.0-src/distribution/docker$ ls
Dockerfile Dockerfile.java11 Dockerfile.mysql README.md docker-compose.yml druid.sh environment storage
hklee@dar-dev-01:~/apache-druid-0.20.0-src/distribution/docker$ docker-c
docker-compose docker-credential-secretservice
hklee@dar-dev-01:~/apache-druid-0.20.0-src/distribution/docker$ docker-compose up
드루이드 사용 종료는 docker-compose down !
드루이드 실행 시켜 준 후 examples 폴더에 들어있는 내가 짠 bicycl-sql-index.json 파일을 실행시켜준다.
hklee@dar-dev-01:~/apache-druid-0.20.0-src/examples$ ./bin/post-index-task --file quickstart/tutorial/bicycle-sql-test.json --url http://localhost:8081
Beginning indexing data for ewl_bicycle
Task started: index_parallel_ewl_bicycle_bhialakl_2020-11-26T09:02:20.420Z
Task log: http://localhost:8081/druid/indexer/v1/task/index_parallel_ewl_bicycle_bhialakl_2020-11-26T09:02:20.420Z/log
Task status: http://localhost:8081/druid/indexer/v1/task/index_parallel_ewl_bicycle_bhialakl_2020-11-26T09:02:20.420Z/status
Task index_parallel_ewl_bicycle_bhialakl_2020-11-26T09:02:20.420Z still running...
Task finished with status: SUCCESS
Completed indexing data for ewl_bicycle. Now loading indexed data onto the cluster...
ewl_bicycle loading complete! You may now query your data
감격 ㅠㅠㅠ

이제 초기데이터 7월 31일 까지 넣어줘보자!
1. sqls에서 컬럼을 빼올 때 spec dimension 에 적어준 순서대로 적는다.
2. 혹시 모르니 테이블앞에 public.table 붙여주기
{
"type" : "index_parallel",
"spec" : {
"dataSchema" : {
"dataSource" : "events_log",
"timestampSpec": {
"column": "event_time",
"format": "auto"
},
"dimensionsSpec" : {
"dimensions" : [
"bcycl_no",
"station_no",
"event_type",
"cleansing_done",
"cleansing_result",
"last_update_time"
]
},
"metricsSpec" : [],
"granularitySpec" : {
"type" : "uniform",
"segmentGranularity" : "month",
"queryGranularity" : "minute",
"rollup" : false
}
},
"ioConfig" : {
"type" : "index_parallel",
"inputSource": {
"type": "sql",
"database": {
"type": "postgresql",
"connectorConfig": {
"connectURI": "jdbc:postgresql://211.238.***.**:****/ewl_hk",
"user": "hklee",
"password": "1105"
}
},
"sqls" : ["SELECT event_time, bcycl_no, station_no, event_type, cleansing_done, cleansing_result, last_update_time FROM public.ewl_events_log order by event_time asc"]
},
"appendToExisting" : true
},
"tuningConfig" : {
"type" : "index_parallel",
"maxRowsPerSegment" : 5000000,
"maxRowsInMemory" : 5000000
}
}
}
응 failed~~~~
드루이드 - task - log 를 살펴보았더니 where절의 inline에서 timestamp랑 interval을 못 읽는거 같다.
그래서 드루이드 다큐먼트에 있는 시간 함수들을 사용해서 해 줘야 할 것같다.
일단 아무 조건도 걸지 말고 ewl_events_log에 있는 모든 데이터들을 가지고 오려하였다.
응 failed~~~
드루이드 task - logs로 에러 확인해보니 밑과 같은 에러가 남
Terminating due to java.lang.OutOfMemoryError: GC overhead limit exceeded
검색해보니 자바 힙이 너무 작아서 생기는 문제라고 한다.
드루이드에서 자바 힙을 늘리는 방법은
apache-druid-0.apache-druid-0.20.0-src/distribution/docker 폴더안의 environment 파일을 수정해준다.
hklee@dar-dev-01:~/apache-druid-0.20.0-src/distribution/docker$ ls
Dockerfile Dockerfile.mysql docker-compose.yml environment
Dockerfile.java11 README.md druid.sh storage
druid.apache.org/docs/latest/tutorials/docker.html#configuration
Docker · Apache Druid
위의 링크를 따라가면
- DRUID_XMX -- set Java Xmx
- DRUID_XMS -- set Java Xms
위의 변수들을 2g로 바꿔주고 docker-compose up을 해주었다.
그랬더니 개발 서버 사-망 ;
[Druid] SQL ingestion
ewl_events_log 테이블의 데이터를 한꺼번에 넣기는 실패해서 나눠서 넣어야 한다. 년도 별로 넣어주자 { "type" : "index_parallel", "spec" : { "dataSchema" : { "dataSource" : "init_events_log", "timestamp..
hk-intern2.tistory.com
↑성공!
'Druid > Project' 카테고리의 다른 글
| [Druid] 에서 postgreSQL로 ingestion Spec json코드 on Docker (0) | 2020.11.30 |
|---|---|
| [Druid] post-index-task-main.py 수정 (최종본!) (0) | 2020.11.26 |
| [Druid] 400만개 데이터 ingestion (csv spec) (0) | 2020.11.26 |
| [Druid] ingestion spec for csv file (csv 파일로 ingestion) (0) | 2020.11.26 |
| (인터넷연결없이) jdk8 & druid install (0) | 2020.09.24 |