You need to enable JavaScript to run this app.
导航
JDBC 程序连接 Presto
最近更新时间:2024.11.18 16:13:53首次发布时间:2024.08.09 14:26:36

环境准备

连接 Presto 队列
  1. 加载 EMR Serverless Presto JDBC 驱动 。
Class.forName("com.facebook.presto.jdbc.PrestoDriver");
  1. 创建 EMR Serverless Presto Connection。
// las_queue_name 默认值为 public-queue-presto 即 Presto 公共队列
String url = "jdbc:presto://${endpoint}:8080/${Catalog}/${Schema}?region=cn-beijing&sessionProperties=presto_queue_name:${your-queue-name};compute_group_name:${your-compute-group-name}" 

Properties properties = new Properties();
properties.setProperty("user", ${User});
properties.setProperty("password", ${Password});
Connection connection = DriverManager.getConnection(url, properties);
  1. JDBC 连接串参数说明。

参数

必填

说明

JDBC 服务地址

EMR Serverless Presto JDBC 服务:
北京:101.126.3.218:8080
上海:180.184.140.244:8080
广州:180.184.214.17:8080
柔佛:101.47.30.220:8080

Catalog

Catalog 名称,可以使用 hive、hudi、iceberg 和 delta

Schema

数据库名称

region

EMR Serverless Presto 服务所在地域, 目前支持 cn-beijing、cn-shanghai、cn-guangzhou、ap-southeast-1,请根据实际情况填写

user

火山引擎 API 密钥管理中的 Access Key ID

password

火山引擎 API 密钥管理中的 Secret Access Key

presto_queue_name

EMR Serverless Presto 所在队列名称, 默认值为共队列: presto-public-queue

compute_group_name

EMR Serverless Presto 所在计算组名称

  1. 查询数据完整代码示例。
import com.facebook.presto.jdbc.PrestoStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.Properties;
 
public void demo() {
    try {
        Class.forName("com.facebook.presto.jdbc.PrestoDriver");
    } catch (ClassNotFoundException e) {
        System.out.println("Failed to load Presto JDCB driver...");
        return;
    }

    final String ak = "火山引擎 API 密钥管理中的 Access Key ID";
    final String sk = "火山引擎 API 密钥管理中的 Secret Access Key";
    final String jdbcUrl = "jdbc:presto://${endpoint}:8080/hive/serverless_presto_schema?region=cn-beijing";
    Properties properties = new Properties();
    properties.setProperty("user", ak);
    properties.setProperty("password", sk);
    try (PrestoConnection connection = (PrestoConnection) DriverManager.getConnection(url, properties)) {
        ResultSet resultSet = connection.createStatement().executeQuery("select name from serverless_presto_table");
        while (resultSet.next()) {
            System.out.println(resultSet.getString(1));
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }
}
  1. 编译执行代码。

说明

以上代码编译以后,可以将 Jar 包提交到服务器上执行。