【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino

这篇具有很好参考价值的文章主要介绍了【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 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用户界面连接

【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino,trino,sql,java,数据库

查看表时出现如下错误:
【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino,trino,sql,java,数据库

需要声明用户,默认输入admin、密码为空
【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino,trino,sql,java,数据库

重新连接可以看到注册的catalog了
【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino,trino,sql,java,数据库
可以像之前使用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文章来源地址https://www.toymoban.com/news/detail-756853.html

到了这里,关于【trino权威指南】使用trino详解:trino client安装、查询sql、DBeaver连接trino、java通过JDBC连接trino的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Trino安装使用及权限控制

    https://blog.csdn.net/shy_snow/article/details/130523338 Trino是一个分布式SQL查询引擎,旨在查询分布在一个或多个异构数据源上的大型数据集。支持丰富的数据源连接方式,支持库、表和字段级别的权限控制,以及支持通过资源组实现类似队列的资源使用控制。这些都需要手工进行配置,这

    2024年02月03日
    浏览(25)
  • 《cuda c编程权威指南》04 - 使用块和线程索引映射矩阵索引

    目录 1. 解决的问题 2. 分析 3. 方法 4. 代码示例 利用块和线程索引,从全局内存中访问指定的数据。 通常情况下, 矩阵 是用行优先的方法在 全局内存 中线性存储的。如下。 8列6行矩阵(nx,ny)=(8,6)。 这里建立二维网格(2,3)+二维块(4,2)为例,使用其块和线程索引映射矩阵

    2024年02月14日
    浏览(44)
  • trino关于查询elasticSearch中时间字段的问题

    查看官方文档:Elasticsearch connector — Trino 395 Documentation  这段话的意思就是,elasticSearch支持很多时间类型的格式化方式,但是trino中es连接器只支持默认的date类型,就是不能加时间格式化 创建 yc_test_data 索引,索引中包含两个属性create_time 和 name PUT   http://10.226.21.38:9200/yc

    2024年02月16日
    浏览(35)
  • trino常用语法和官方sql手册

    trino常用语法 trino数据库造简单表的语法模板 = 没有分区的sql 简单创建、查询、插入 =========== create table hive.youyou030310.even( id int, event_type varchar); insert into hive.youyou030310.even(id,event_type) values (1,‘点击’),(1,‘查看商品’),(1,‘购物’),(2,‘点击’),(2,‘查看商品’),(3,‘点击’)

    2024年02月05日
    浏览(38)
  • 【大数据】Presto(Trino)SQL 语法进阶

    Presto(Trino)是一个快速、分布式的SQL查询引擎,可以用于查询各种数据源,包括Hadoop、NoSQL、关系型数据库等。下面是Presto(Trino)SQL语法的概述: 它支持标准SQL语法,包括以下SQL命令: SELECT :用于从一个或多个表中检索数据,指定所需的列和过滤条件。 FROM :用于指定要

    2024年02月11日
    浏览(34)
  • 简明SQL条件查询指南:掌握WHERE实现数据筛选

    条件查询是用于从数据库中根据特定条件筛选数据行的一种方式,它避免了检索整个表中的数据。通常,使用 WHERE 子句来定义过滤条件,只有符合这些条件的数据行才会被返回。 SQL中的运算符有:=、!=、、 等,用于进行条件判断。 在逻辑运算中,常见的运算符包括: and:

    2024年02月09日
    浏览(70)
  • SQL中的UNION和UNION ALL的区别及用法详解、“提高SQL查询效率:UNION和UNION ALL的比较、使用实例详解SQL中的UNION和UNION ALL操作符

    UNION 和 UNION ALL 都是 SQL 中用于将多个 SELECT 语句的结果合并成一个结果集的操作符。它们都适用于需要将多个表或查询结果合并在一起的情况。但是它们的行为略有不同。 UNION 和 UNION ALL 的区别在于, UNION 会将结果集合并成一个不含重复行的结果集,而 UNION ALL 则会保留所有

    2024年02月03日
    浏览(63)
  • Zookeeper 权威指南

    作者:禅与计算机程序设计艺术 1997年,Apache发布了ZooKeeper项目,基于Google的Chubby论文,解决分布式协调服务问题。ZooKeeper是一种开源的分布式协调服务,它是一个高效且可靠的分布式数据管理框架。其目标就是构建一个简单而健壮的分布式数据管理系统。 ZooKeeper通过一组简

    2024年02月09日
    浏览(38)
  • 《Kafka权威指南》读书笔记

    《Kafka权威指南》第一、三、四、六章,是重点。可以多看看。 kafka是一个发布与订阅消息系统 消息:kafka的数据单元称为\\\"消息\\\"。可以把消息看成是数据库中的一个\\\"数据行\\\"。 消息的key:为key生成一个一致性散列值(HashCode),然后使用散列值对主题分区数进行取模,为消息选

    2024年02月04日
    浏览(39)
  • Elasticsearch权威指南

    作者:禅与计算机程序设计艺术 Elasticsearch是一个基于Lucene构建的开源搜索引擎,它提供了一个分布式、高扩展性、可靠、快速、精准的全文检索解决方案。它的主要特点包括: 分布式架构:集群中每一个节点都存储数据并且可以同时被索引和搜索; RESTful API:Elasticsearch通过

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包