环境准备
开发环境准备
| 准备项 | 说明 |
| 安装JDK | JDK 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可以查看查询任务的具体执行状态。