【trino權威指南】使用trino詳解:trino client安裝、查詢sql、DBeaver連接trino、java通過JDBC連接trino

文章目錄

  • 一. Trino CLI
    • 1. 安裝client
    • 2. 使用client執行sql
  • 二. JDBC driver 連接Trino
    • 1. 通過DBeaver用戶界面連接
    • 2. JDBC Driver in java
    • 2.1. 環境配置
    • 2.2. 注冊和配置driver
    • 2.3. 連接參數
    • 2.4. 查詢例子

一. Trino CLI

1. 安裝client

Trino CLI提供了一個基于終端的交互式shell。你可以通過它運行查詢并與Trino服務端交互來檢查其元數據

下載地址:trino-cli-434-executable.jar

# 下載wget -O trino https://repo1.maven.org/maven2/io/trino/trino-cli/434/trino-cli-434-executable.jar# 添加可執行權限、并將其添加到PATH下,方便使用
chmod +x trino
mv trino ~/bin
export PATH=~/bin/:$PATH

?

2. 使用client執行sql

./trino http://trino.example.com:8080# 幫助文檔
trino> helpSupported commands:
QUIT
EXIT
CLEAR
EXPLAIN [ ( option [, ...] ) ] <query>options: FORMAT { TEXT | GRAPHVIZ | JSON }TYPE { LOGICAL | DISTRIBUTED | VALIDATE | IO }
DESCRIBE <table>
SHOW COLUMNS FROM <table>
SHOW FUNCTIONS
SHOW CATALOGS [LIKE <pattern>]
SHOW SCHEMAS [FROM <catalog>] [LIKE <pattern>]
SHOW TABLES [FROM <schema>] [LIKE <pattern>]
USE [<catalog>.]<schema>

?
運行sql

trino> select *  from "mysql-1".flinkx_test.flinkx_hdfs_log-> ;id  |       ip        | stamp | url  | refer | useragent |   pid    | uid  | mid  |     insert_time     | create_time | create_date
------+-----------------+-------+------+-------+-----------+----------+------+------+---------------------+-------------+-------------1 | NULL            | NULL  | NULL | aaaa  | NULL      | 20221212 | NULL | NULL | 2023-01-31 16:32:09 | NULL        | 2023-01-111 | NULL            | NULL  | NULL | aaaa  | NULL      | 20221212 | NULL | NULL | 2023-01-31 18:37:20 | NULL        | 2023-01-11  ...
(18 rows)Query 20231206_032803_00000_78prf, FINISHED, 1 node
Splits: 1 total, 1 done (100.00%)
0.67 [18 rows, 0B] [26 rows/s, 0B/s]

?
連接trino時可以設置默認的catalog(某個連接實例)和schema(數據庫),這樣可以直接查詢表。

 ./trino http://localhost:8080/mysql-1/flinkx_test
trino:flinkx_test> show tables;Table
-----------------------------------------------------aaaaaa_csv111_1aaa_csv111_2     
...

?

USE默認的catalog和schema,直接查詢此庫下的表

trino> USE tpch.tiny;
USE
trino:tiny>

?

debug功能

./trino http://localhost:8080/mysql-1/flinkx_test --debug trino:flinkx_test> select *  from "mysql-1".flinkx_test.flinkx_hdfs_log-> ;id  |       ip        | stamp | url  | refer | useragent |   pid    | uid  | mid  |     insert_time     | create_time | create_date
------+-----------------+-------+------+-------+-----------+----------+------+------+---------------------+-------------+-------------1 | NULL            | NULL  | NULL | aaaa  | NULL      | 20221212 | NULL | NULL | 2023-01-31 16:32:09 | NULL        | 2023-01-111 | NULL            | NULL  | NULL | aaaa  | NULL      | 20221212 | NULL | NULL | 2023-01-31 18:37:20 | NULL        | 2023-01-11  
...http://localhost:8080/ui/query.html?20231206_033726_00007_78prf
Splits: 1 total, 1 done (100.00%)
CPU Time: 0.0s total,    3K rows/s,     0B/s, 4% active
Per Node: 0.0 parallelism,    30 rows/s,     0B/s
Parallelism: 0.0
Peak Memory: 64B
0.60 [18 rows, 0B] [30 rows/s, 0B/s]

?
--execute選項

 ./trino http://localhost:8080/mysql-1/flinkx_test --execute 'select *  from "mysql-1".flinkx_test.flinkx_hdfs_log limit 3;'"1","","","","aaaa","","20221212","","","2023-01-31 16:32:09","","2023-01-11"
"1","","","","aaaa","","20221212","","","2023-01-31 18:37:20","","2023-01-11"
"","124.239.193.194","","","","","h_home","","","2023-02-10 10:52:01","",""

?

避免使用完全限定符

# 使用`--catalog`和`--schema`選項來
./trino http://localhost:8080 --catalog "mysql-1" --schema flinkx_test \--execute 'select *  from flinkx_hdfs_log limit 3;'# 通過http設限定符
./trino http://localhost:8080/mysql-1/flinkx_test  \--execute 'select *  from flinkx_hdfs_log limit 3;'

?
執行多個sql

trino http://localhost:8080  \--execute 'use "mysql-1".flinkx_test;select *  from flinkx_hdfs_log limit 3;'

?
執行sql文件

vim trino.sql
use "mysql-1".flinkx_test;
select *  from flinkx_hdfs_log limit 3;./trino http://localhost:8080  -f trino.sql

?
輸出格式

Trino CLI提供了--output-format選項來控制如何在非交互模式下顯示輸出,可用的選項有ALIGNED、VERTICAL、TSV、TSV_HEADER、CSV、CSV_HEADER、CSV_UNQUOTED、CSV_HEADER_UNQUOTED、JSON和NULL,默認值是CSV。

?
忽略錯誤

Trino CLI提供了--ignore-error選項來忽略執行文件中的查詢時遇到的任何錯誤。默認行為是在遇到第一個錯誤時終止執行腳本。

?

二. JDBC driver 連接Trino

任何Java應用程序都可以通過Java數據庫連接(JDBC)驅動連接到Trino。通過JDBC驅動,所有這些應用程序都可以使用Trino。

Trino的JDBC驅動允許你連接到Trino并使用SQL語句與Trino交互。

如果你熟悉JDBC驅動的不同實現,就知道Trino的JDBC驅動是Type 4驅動,這僅僅意味著它直接與Trino原生協議通信。

?

1. 通過DBeaver用戶界面連接

在這里插入圖片描述

查看表時出現如下錯誤:
在這里插入圖片描述

需要聲明用戶,默認輸入admin、密碼為空
在這里插入圖片描述

重新連接可以看到注冊的catalog了
在這里插入圖片描述
可以像之前使用DBeaver查看表了。

?

2. JDBC Driver in java

2.1. 環境配置

需要java 8 或更高
所有通過JDBC連接Trino的用戶,必須在system.jdbc schema中賦予權限

maven依賴:

<dependency><groupId>io.trino</groupId><artifactId>trino-jdbc</artifactId><version>434</version>
</dependency>

其他版本地址在:

A list of all available versions can be found in the Maven Central Repository.

客戶端使用http協議和 Trino client REST API 和Trino進行通訊。

?

2.2. 注冊和配置driver

JDBC URL支持的格式:

jdbc:trino://host:port
jdbc:trino://host:port/catalog
jdbc:trino://host:port/catalog/schema

舉例:

jdbc:trino://example.net:8080/hive/sales

連接example.net上的trino(8080端口),并明確了catalog和schema。

如果trino的驅動識別不到,則可以顯式聲明:io.trino.jdbc.TrinoDriver

?

2.3. 連接參數

聲明方式有如下兩種

// properties
String url = "jdbc:trino://example.net:8080/hive/sales";
Properties properties = new Properties();
properties.setProperty("user", "test");
properties.setProperty("password", "secret");
properties.setProperty("SSL", "true");
Connection connection = DriverManager.getConnection(url, properties);// URL parameters
String url = "jdbc:trino://example.net:8443/hive/sales?user=test&password=secret&SSL=true";
Connection connection = DriverManager.getConnection(url);

當然這兩種方式我們可以混用,有些參數通過properties設置,有些在url中設置。

完整的參數見:Parameter reference

?

2.4. 查詢例子

package com.gao;import java.sql.*;public class TrinoQueryExample {public static void main(String[] args) {// Trino數據庫連接信息String trinoUrl = "jdbc:trino://xxx:8080";String trinoUser = "admin";String trinoPassword = "";// SQL查詢語句String sqlQuery = "select *  from  \"mysql-1\".flinkx_test.flinkx_hdfs_log limit 3";try {Class.forName("io.trino.jdbc.TrinoDriver");// 建立Trino數據庫連接Connection connection = DriverManager.getConnection(trinoUrl, trinoUser, trinoPassword);// 創建Statement對象Statement statement = connection.createStatement();// 執行查詢ResultSet resultSet = statement.executeQuery(sqlQuery);// 處理查詢結果while (resultSet.next()) {// 根據查詢結果的列名或索引獲取數據Integer id = resultSet.getInt("id");Timestamp create_time = resultSet.getTimestamp("create_time");// 處理獲取的數據System.out.println("id: " + id + ", create_time: " + create_time);}// 關閉資源resultSet.close();statement.close();connection.close();} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}
}id: 1, create_time: null
id: 1, create_time: null
id: 0, create_time: null

?
?
參考:
《trino權威指南:原書第二版》
trino官網:https://trino.io/docs/current/client.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/211619.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/211619.shtml
英文地址,請注明出處:http://en.pswp.cn/news/211619.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

上海交通大學生存手冊PDF

強烈推薦所有大學生去閱讀《上海交通大學生存手冊》。雖然它可能有些冗長&#xff0c;但非常重要&#xff0c;因為它道出了大學教育的本質。 如果幾年前我能夠看到這本書&#xff0c;也許我的大學生活會有所不同。現在我將向正在上大學或者將要上大學的你推薦這本書。 無論你…

通過虛擬機安裝Open5GS 和UERANSIM記錄

目錄 wsl虛擬環境嘗試失敗 step1 安裝wsl: step2下載Ubuntu 20.04.6 LTS: step3升級wsl&#xff1a; step4生成用戶: step5 linux下安裝軟件需要的鏡像&#xff1a; step6 安裝圖形界面xfce和瀏覽器&#xff1a; step6 安裝chrome virtual box安裝ubuntu step7&#xf…

AWS攻略——Peering連接VPC

文章目錄 創建IP/CIDR不覆蓋的VPC創建VPC創建子網創建密鑰對創建EC2 創建Peering接受Peering邀請修改各個VPC的路由表修改美東us-east-1 pulic subnet的路由修改悉尼ap-southeast-2路由 測試知識點 我們回顧下《AWS攻略——VPC初識》中的知識&#xff1a; 一個VPC只能設置在一…

Android引用SDK包實現高德地圖展示

一、準備工作 注冊高德地圖開放平臺 注冊過程我就不多說了&#xff0c;挺簡單的&#xff0c;需要登錄&#xff0c;然后注冊成為開發者&#xff0c;還需要支付寶認證、手機號碼驗證、郵箱驗證挺多的&#xff0c;但是速度很快。基本上隨時驗證隨時注冊成功。新建應用新建…

在C語言中,%d,%c,%f都是什么意思

printf函數調用的一般形式 printf函數是一個標準庫函數&#xff0c;它的函數原型在頭文件“stdio.h”中。但作為一個特例&#xff0c;不要求在使用 printf 函數之前必須包含stdio.h文件。printf函數調用的一般形式為&#xff1a; printf(“格式控制字符串”&#xff0c;輸出表列…

重點車輛安全監測預警技術方案

目錄 1.系統架構 2.詳細設計 2.1駕駛員信息監控 2.1.1駕駛員基本信息管理 2.1.2人車匹配信息 2.1.3駕駛員在線狀態管理 2.2車輛狀態信息管理 2.2.1車輛信息管理 2.1.2車輛在路狀態管理 2.3重點車輛安全監測預警系統云平臺 2.3.1云平臺需求分析 2.3.2 設計思想 2.4.…

urllib 異常、cookie、handler及代理(四)

目錄 一、urllib異常 二、urllib cookie登錄 三、urllib handler 處理器的基本使用 四、urllib 代理和代理池 參考 一、urllib異常 URLError/HTTPError 簡介&#xff1a; 1.HTTPError類是URLError類的子類 2.導入的包urllib.error.HTTPError urllib.error.URLError 3.h…

18 Java與redis集群的通信

1、引入依賴 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.6.3</version></dependency>2、配置 # Redis集群服務器地址 redis.nodesaliyun:6900,aliyun:6901,aliyun:6902,aliyun…

20道計算機網絡面試題

網絡分層 1、說說OSI 七層、TCP/IP 四層的關系和區別&#xff1f; OSI 七層從下往上依次是&#xff1a;物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。一張圖給你整明白&#xff1a; TCP/IP 四層從下往上依次是&#xff1a;網絡接口層、網絡層、傳輸層、應用…

MATLAB - 評估擬合優度、評價擬合效果

系列文章目錄 文章目錄 系列文章目錄前言一、如何評估擬合優度二、擬合優度統計2.1 SSE - 誤差引起的平方和2.2 R 平方2.3 自由度調整 R 平方2.4 均方根誤差 三、MATLAB - 評估曲線擬合度3.1 加載數據并擬合多項式曲線3.2 繪制擬合方程、數據、殘差和預測范圍圖3.3 評估指定點3…

java--Object

1.Object類的作用 Object類是java中所有類的祖宗類&#xff0c;因此&#xff0c;java中所有類的對象都可以直接使用Object類中提供一些方法 2.Object類的常見方法 ①toString存在的意義&#xff1a;toString()方法存在的意義就是為了被子類重寫&#xff0c;以便返回對象具體的…

【Python實戰系列】一文徹底搞懂異常捕獲及處理(理論+源碼)

一、問題 異常處理是Python中一種用于處理程序運行時錯誤的機制。在編寫代碼時&#xff0c;可能會出現各種不可預測的情況&#xff0c;例如除零錯誤、文件不存在、網絡連接問題等等。為了確保程序能夠在出現錯誤時正常運行&#xff0c;您可以使用異常處理機制來捕獲和處理這些異…

K8S學習指南(5)-k8s核心對象namespace

文章目錄 前言什么是Namespace&#xff1f;Namespace的類型創建Namespace使用kubectl創建Namespace示例 切換Namespace查看Namespace在Namespace中部署應用程序使用Namespace進行資源隔離Namespace的權限控制刪除Namespace總結 前言 Kubernetes&#xff08;簡稱K8s&#xff09…

前端知識(十六)——js獲取時間戳方法

1、獲取當前時間 let date new Date() 2、將字符串或者對象直接轉化成時間戳 方法&#xff1a;Date.parse() 注意&#xff1a;不推薦這種方法&#xff0c;毫秒級別的數值被轉化為000 3、通過valueOf()函數返回指定的原始值獲得精準的時間戳值 方法&#xff1a;valueOf()…

git自動更新功能

確認權限 因為一般Linux系統網頁用的www 或 www-data用戶和用戶組,所以要實現自動來去,首先要在www用戶權限下生成ssh密鑰,不然沒有權限,其次就是,要把用root用戶拉去的代碼,批量改成www用戶 1. 給www權限 vi /etc/sudoers www ALL=(ALL) NOPASSWD:/bin/chow…

memset的用法

語法 1.引用所需頭文件 #include<string.h> 2.聲明 void * memset ( void * ptr, int value, size_t num ); ptr 表示要設置的數據的起始地址。如果是要設置整個數組的數據&#xff0c;那ptr就是數組名&#xff08;數組首元素的地址&#xff09; value 表示要設置的值…

【學習筆記】lyndon分解

摘抄自quack的ppt。 這部分和 s a sa sa的關聯比較大&#xff0c;可以加深對 s a sa sa的理解。 Part 1 如果字符串 s s s的字典序在 s s s以及 s s s的所有后綴中是最小的&#xff0c;則稱 s s s是一個 lyndon \text{lyndon} lyndon串。 lyndon \text{lyndon} lyndon分解&a…

c++ 類和對象-封裝意義一

屬性和行為作為整體 示例一&#xff1a;設計一個圓類&#xff0c;求圓的周長 #include<iostream> using namespace std; //圓周率 const double PI 3.14; //設計一個圓類&#xff0c;求圓的周長 //圓求周長的公式&#xff1a;2*PI*半徑 //class代表設計一個類&#xf…

熔池處理Tecplot 360 和CFD-Post做出一樣的效果

熔池處理Tecplot 360 和CFD-Post做出一樣的效果 效果展示詳細講述Tecplot 360實現過程分析實現過程第一步實現過程第二步界面美化注意點效果展示 詳細講述Tecplot 360實現過程 分析 這里主要是將體積分數大于0.5的區域抽取出來,然后顯示溫度場,所以這里主要考慮下面連個思考…

PCL 三維點云中求解圓的三維方程

一、概述 在給出的三維點云中求解擬合圓的三維方程 二、代碼示例 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/sample_consensus/ransac.h> #include <pcl/sample_consensus/sac_model_circle3D.h> // 擬