示例工程开发

最近更新时间: 2026-03-13 09:03:00

环境准备

开发环境准备

准备项说明
安装JDKJDK 17,推荐使用 konaJDK,下载地址
安装和配置 IDE按需选择,比如 IntelliJ IDEA 或 Eclipse,示例使用IDEA
安装 Maven开发环境基础配置,负责构建 Java 应用程序
Maven 配置准备如果需要本地调试,需要参考 6.开发环境准备 配置 Maven settings.xml,推荐 Maven 3.6.3,下载地址

导入示例工程代码

以下以 IntelliJ IDEA 举例,将示例工程代码导入进行说明。
2.1 下载样例代码:https://g-necm8077.coding.net/public/tencentcloud-tbds-examples/tbds-examples/git/files/master

克隆或者直接下载master代码都可以

git clone https://g-necm8077.coding.net/public/tencentcloud-tbds-examples/tbds-examples

2.2 导入项目,然后选择JDK、MAVEN和settings文件。

样例代码说明

功能说明

演示的实例是样例代码通过JDBC的方式连接和访问Trino引擎

代码逻辑说明

JDBC具体访问代码
Simple认证

package com.tencent.tbds.trino;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class TrinoJDBCExample {
    public static void main(String[] args) {
        try {
            args = new String[]{"hadoop", "1.2.3.4", "9000", "hive", "default"};
            String url = "jdbc:trino://" + args[1] + ":" + args[2] +"/" + args[3] + "/" + args[4];
            Properties properties = new Properties();
            properties.setProperty("user", args[0]);
            Connection connection = DriverManager.getConnection(url, properties);
            Statement stmt = connection.createStatement();
            try {
                ResultSet rs = stmt.executeQuery("select * from city");
                System.out.println("select * from city");
                while(rs.next()) {
                    int id = rs.getInt(1);
                    String name = rs.getString(2);
                    System.out.printf("id=%d, name=%s%n", id, name);
                }
            } catch (Exception e) {
                System.out.println(e);
            }
            finally {
                stmt.close();
                connection.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Kerberos 认证

package com.tencent.tbds.trino;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class TrinoJDBCKrbsExample {
    public static void main(String[] args) {
        try {
            // 构造访问trino coordinator的jdbc url,hive表示catalog,default表示schema/database
            String url = "jdbc:trino://1.2.3.4:9443/hive/default/";
            System.out.println("url: " + url);
            Properties properties = new Properties();
            // 配置开启https协议访问
            properties.setProperty("SSL", "true");
            properties.setProperty("SSLVerification", "NONE");

            // 指定使用的用户
            properties.setProperty("user", "hadoop");

            // 运行jdbc client环境的krbs配置
            properties.setProperty("KerberosConfigPath", "/etc/krb5.conf");
            properties.setProperty("KerberosPrincipal", "hadoop/10.206.17.113@TBDS-2NGVYEHH");
            properties.setProperty("KerberosKeytabPath", "/var/krb5kdc/emr.keytab");
            properties.setProperty("KerberosRemoteServiceName", "hadoop");
            properties.setProperty("KerberosUseCanonicalHostname", "false");

            Connection connection = DriverManager.getConnection(url, properties);
            Statement stmt = connection.createStatement();
            try {
                ResultSet rs = stmt.executeQuery("select * from city");
                System.out.println("select * from city");
                while(rs.next()) {
                    int id = rs.getInt(1);
                    String name = rs.getString(2);
                    System.out.printf("id=%d, name=%s%n", id, name);
                }
            } catch (Exception e) {
                System.out.println(e);
            }
            finally {
                stmt.close();
                connection.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

LDAP 认证

package com.tencent.tbds.trino;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

public class TrinoJDBCLdapExample {
    public static void main(String[] args) {
        try {
            // 构造访问trino coordinator的jdbc url,hive表示catalog,default表示schema/database
            String url = "jdbc:trino://1.2.3.4:9443/hive/default/";
            System.out.println("url: " + url);
            Properties properties = new Properties();
            // 配置开启https协议访问
            properties.setProperty("SSL", "true");
            properties.setProperty("SSLVerification", "NONE");

            // ldap用户与密码
            properties.setProperty("user", "sn124");
            properties.setProperty("password", "Tbds@2023!");

            Connection connection = DriverManager.getConnection(url, properties);
            Statement stmt = connection.createStatement();
            try {
                ResultSet rs = stmt.executeQuery("select * from city");
                System.out.println("select * from city");
                while(rs.next()) {
                    int id = rs.getInt(1);
                    String name = rs.getString(2);
                    System.out.printf("id=%d, name=%s%n", id, name);
                }
            } catch (Exception e) {
                System.out.println(e);
            }
            finally {
                stmt.close();
                connection.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

pom文件中需要引入Trino的JDBC驱动包

...
    <dependencies>
        <!--> 引入trino版本435的驱动 <-->
        <dependency>
            <groupId>io.trino</groupId>
            <artifactId>trino-jdbc</artifactId>
            <version>435</version>
        </dependency>
        ...
    </dependencies>
...

代码调测

使用idea并配置好环境之后,即可进行调试,需要注意的是,保证开发环境和Trino组件的网络互通,如果网络不互通,将代码打包之后上传到作业机,使用Java -jar TrinoExample-1.0-SNAPSHOT-jar-with-dependencies.jar 运行代码,注意,需要在pom.xml中标注mainClass。

在IDEA中打好断点之后,点击红框中标志,并选择debug模式

程序运行至断点处,可以查询相关变量的参数

继续执行程序查看,执行结果

查询任务详细进度和执行计划

登录TBDS Manager 管控平台,点击“集群列表”,选择 Trino 程序运行所对应的集群。点击“集群服务”,选择 TRINO 服务,点击 WebUI 地址跳转至 Web UI 界面。

输入用户名和密码,通过查询WebUI可以查看查询任务的具体执行状态。