Table of Contents
Trino(Presto SQL) 가 뭘까…
일단 Trino 로 검색하면 문서가 그닥 없다.
Trino 는 Presto 의 rename 버전이다.
(저작권 문제로)
Presto 로 검색해서 기본 지식을 만들고,
Trino 에서 달라진 점을 찾아보자.
통계 뽑아주세요 에서 벗어나 보자.
SELECT
orders.orderkey, SUM(tax)
FROM
orders
LEFT JOIN lineitem
ON orders.orderkey = lineitem.orderkey
WHERE
discount = 0
GROUP BY
orders.orderkey
개발자가 매번 통계를 뽑아 주는 대신,
실무자가 직접 쿼리를 작성하게 하면,
개발자는 반복되는 단순 업무를 줄일 수 있고,
실무자는 누구 눈치 안보고 보고싶은 데이타를 엑셀다루듯이 맘대로 뽑아 볼 수 있다.
설치
여기 에서 설치파일을 다운받는다.
Server package
# mkdir ~/trino
# cd ~/trino/
#
# wget https://repo1.maven.org/maven2/io/trino/trino-server/364/trino-server-364.tar.gz
#
# tar xvfz trino-server-364.tar.gz
# cd trino-server-364/
도커로 설치하자.
docker pull trinodb/trino
테스트용으로 하나의 노드만 실행해 보자.
docker run -p 9080:8080 --name trino trinodb/trino
Command line client
# cd ~/trino/
# wget https://repo1.maven.org/maven2/io/trino/trino-cli/364/trino-cli-364-executable.jar
docker exec -it trino trino
trino> SHOW CATALOGS;
trino> SHOW SCHEMAS IN tpch;
trino> SHOW SCHEMAS FROM tpch;
trino> SHOW TABLES IN tpch.sf1;
trino> SELECT * FROM tpch.sf1.nation WHERE nationkey = 1;
trino> USE tpch.sf1;
trino:sf1> SHOW TABLES;
trino:sf1> DESCRIBE nation;
trino:sf1> SELECT * FROM nation;
trino:sf1> SELECT * FROM orders LIMIT 10;
trino:sf1> SHOW FUNCTIONS;
JDBC driver
cd ~/trino/
wget https://repo1.maven.org/maven2/io/trino/trino-jdbc/364/trino-jdbc-364.jar
Connectors
아래의 데이타를 처리할 수 있다.
https://trino.io/docs/current/connector.html
nomad 에 trino 올리기
아래의 방법으로 노마드 서버에 trino 를 배포할 수 있다.
https://github.com/skyer9/TerraformOnAws/blob/main/run_jobs/trino_dev.nomad
아래의 방법으로 trino 에 접속할 수 있다.
docker exec -it b3c7f8db67c2 trino --server=http://192.168.0.9:29203 --catalog mysql
trino> SHOW CATALOGS ;
Catalog
---------
mysql
system
(2 rows)
Query 20211121_110139_00000_ut8a8, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0.91 [0 rows, 0B] [0 rows/s, 0B/s]
trino> use mysql;
Query 20211121_110153_00001_ut8a8 failed: Schema does not exist: mysql.mysql
trino> use mysql.mg;
USE
trino:mg>
trino:mg>
trino:mg>
trino:mg> SHOW TABLES ;
Table
---------------------
tbl_api_user
tbl_import
tbl_restaurant_info
tbl_user_info
(4 rows)
Query 20211121_110217_00005_ut8a8, FINISHED, 2 nodes
Splits: 19 total, 19 done (100.00%)
0.22 [4 rows, 102B] [17 rows/s, 455B/s]
Zeppelin 에서 접근하기
여기 에 설명한 방법으로 Trino 에 접근가능하다.