Trino(Presto SQL) 가 뭘까…

By | 2021년 11월 21일
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 에 접근가능하다.

답글 남기기