【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> help

Supported 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-11
    1 | 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
-----------------------------------------------------
 aaa
 aaa_csv111_1
 aaa_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-11
    1 | 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/233056.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

H264之NALU结构详解

摘要&#xff1a;本文详细描述了AVC的NALU的码流结构&#xff0c;以及各个层面上NALU详细的构成。   关键字&#xff1a;AVC&#xff0c;NALU 1 NALU简介 NAL层即网络抽象层&#xff08;Network Abstraction Layer&#xff09;&#xff0c;是为了方便在网络上传输的一种抽象…

tomcat篇---第四篇

系列文章目录 文章目录 系列文章目录前言一、为什么我们将tomcat称为Web容器或者Servlet容器 ?二、tomcat是如何处理Http请求流程的?三、tomcat结构目录有哪些?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这…

Mysql索引一篇就够了

索引 定义 索引是对数据库表中一列或者多列的值进行排序的结构。 目的 数据库索引好比一本书的目录&#xff0c;提高查询效率。但是为表设置索引要付出相应的代价&#xff1a; 增加了数据库的存储空间 在插入和修改时需花费更多的时间&#xff08;因为索引也要随之变动&#…

带有 RaspiCam 的 Raspberry Pi 监控和延时摄影摄像机

一、说明 一段时间以来&#xff0c;我一直想构建一个运动激活且具有延时功能的树莓派相机&#xff0c;但从未真正找到我喜欢的案例。我在thingiverse上找到了这个适合树莓派和相机的好案例。它是为特定的鱼眼相机设计的&#xff0c;但从模型来看&#xff0c;我拥有的廉价中国鱼…

【基于Python的二手车数据可视化平台的设计与实现】

基于Python的二手车数据可视化平台的设计与实现 前言数据获取与处理网络爬虫数据存储 可视化平台的设计与实现Flask框架数据可视化 创新点结语 前言 随着社会的不断发展&#xff0c;二手车市场也逐渐成为一个备受关注的领域。为了更好地为二手车的买家和卖家提供信息&#xff…

Pycharm设置为中文版

文章目录 关注公众号&#xff1a;『AI学习星球』 算法学习、4对1辅导、论文辅导或核心期刊可以通过公众号或CSDN滴滴我 在使用Pycharm的时候&#xff0c;会发现里面的菜单栏以及内容都是英文为主。 英文版的优点是&#xff1a;比较稳定&#xff0c;其次大家都在用英文版&…

MobaXterm成功连接到开发环境后,过一段时间会自动断开。

问题现象 MobaXterm成功连接到开发环境后&#xff0c;过一段时间会自动断开。 原因 配置MobaXterm工具时&#xff0c;没有勾选“SSH keepalive”或专业版MobaXterm工具的“Stop server after”时间设置太短。

Android 样式小结

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、使用3.1 创建并应用样式3.2 创建并…

zabbix 通过 odbc 监控 mssql

1、环境 操作系统&#xff1a;龙蜥os 8.0 zabbix&#xff1a;6.0 mssql&#xff1a;2012 2、安装odbc 注意&#xff1a;需要在zabbix server 或者 zabbix proxy 安装 odbc驱动程序 dnf -y install unixODBC unixODBC-devel3、安装mssql驱动程序 注意&#xff1a;我最开始尝试…

【Unity】Addressable包资源加载失败:CRC Mismatch.

Error while downloading Asset Bundle: CRC Mismatch. 是资源下载校验失败&#xff0c;但是资源和上次打包的资源是一样的。没有排查到原因&#xff0c;在谷歌搜索后看到 大概就是指Unity版本修改后打包&#xff0c;会破坏原来的CRC信息&#xff0c;导致导报出来的资源无法通…

一篇文章带你了解并使用mybatis框架

mybatis简介&#xff1a; MyBatis 是一款优秀的持久层框架&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;P…

深度学习之全面了解预训练模型

在本专栏中&#xff0c;我们将讨论预训练模型。有很多模型可供选择&#xff0c;因此也有很多考虑事项。 这次的专栏与以往稍有不同。我要回答的问题全部源于 MathWorks 社区论坛&#xff08;ww2.mathworks.cn/matlabcentral/&#xff09;的问题。我会首先总结 MATLAB Answers …

Python time模块详解

time 模块主要包含各种提供日期、时间功能的类和函数。该模块既提供了把日期、时间格式化为字符串的功能&#xff0c;也提供了从字符串恢复日期、时间的功能。 在 Python 的交互式解释器中先导入 time 模块&#xff0c;然后输入 [e for e in dir(time) if not e.startswith(_)…

【数据结构】万字一文手把手解读哈希————(开/闭散列)解决哈希冲突完整详解(6)

前言 大家好吖&#xff0c;欢迎来到 YY 滴 数据结构 系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴 数据结构 专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.哈希&#xff08…

【智能家居】七、人脸识别 翔云平台编程使用(编译openSSL支持libcurl的https访问、安装SSL依赖库openSSL)

一、翔云 人工智能开放平台 API文档开发示例下载 二、编译openSSL支持libcurl的https访问 安装SSL依赖库openSSL(使用工具wget)libcurl库重新配置&#xff0c;编译&#xff0c;安装运行&#xff08;运行需添加动态库为环境变量&#xff09; 三、编程实现人脸识别 四、Base6…

距离度量(各距离含义)

欧氏距离 在n维空间中两点的真实距离&#xff0c;向量的自然长度 由于欧几里得几何学的关系称为欧氏距离 二维空间两点计算公式&#xff1a; d ( x 1 − x 2 ) 2 ( y 1 − y 2 ) 2 d \sqrt{(x_1 - x_2)^2 (y_1 - y_2)^2} d(x1​−x2​)2(y1​−y2​)2 ​ 三维空间两点计算…

fl studio2024试用版本如何汉化中文?

fl studio2024全称Fruity Loops Studio2024&#xff0c;这款软件也被人们亲切的称之为水果&#xff0c;它是一款功能强大的音乐创作编辑软件&#xff0c;拥有全功能的录音室&#xff0c;大混音盘以及先进的音乐制作工具&#xff0c;用户通过使用该软件&#xff0c;就可以轻松制…

springboot mybatis手动事务

创建springboot项目 搭建最简单的SpringBoot项目-CSDN博客 引入mybatis和数据库依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><…

树莓派CSI摄像头在新系统(23年12月)中的不用设置了,没有开关,也没有raspistill

网上都是老信息&#xff0c;用的raspistill命令&#xff0c;至少新系统没有这个东西了&#xff0c;也不会在sudo raspi-config里面也没有摄像头的开关了。 ls /dev/video* 能看到摄像头video0&#xff0c;但是vcgencmd get_camera supported0&#xff0c; detected0&#xff0…