Java集成presto查询

本文详细介绍如何在Java中集成Presto,包括pom文件引入依赖、application.yml配置及通过JDBC建立连接的方法。同时提供了获取连接和执行SQL查询的具体代码示例。
一、Java集成presto

1.pom文件引入相关jar

    <dependency>
            <groupId>com.facebook.presto</groupId>
            <artifactId>presto-jdbc</artifactId>
            <version>0.234.1</version>
        </dependency>

2.application.yml配置presto相关

presto:
  url: xxxxxx
  username: root
  password: root
  port: 8088

3.获取连接与测试

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;

import java.sql.*;
import java.util.Properties;

/**
 * @Description:
 * @author: luoy
 * @date: 2020-06-24 09:45
 */
@Configuration
public class PrestoConnect {


    @Value("${presto.url}")
    private String server;

    @Value("${presto.port}")
    private String port;

    @Value("${presto.username}")
    private String username;

    @Value("${presto.password}")
    private String password;

    private Connection getConnection() throws Exception {

        /**
         * 功能:presto 通过 jdbc 连接
         * 示例:jdbc:presto://host:port/
         **/
        String jdbcurl = "jdbc:presto://" + server + ":" + port + "/";
        Connection conn ;
        Properties props = new Properties();
        Class.forName("com.facebook.presto.jdbc.PrestoDriver");
        props.setProperty("user", username);
        if (StringUtils.isNotBlank(password)) {
            props.setProperty("password", password);
            props.setProperty("SSL", "true");
            //props.setProperty("SSLTrustStorePath", SSLTrustStorePath);
            //props.setProperty("SSLTrustStorePassword", SSLTrustStorePassword);
            jdbcurl = String.format("jdbc:presto://%s:%s/", server, port);
        }
        conn = DriverManager.getConnection(jdbcurl, props);

        /*设置连接的数据源类型
         * 示例:mysql、hive
         */
        conn.setCatalog("hive");
        return conn;
    }

    public JSONArray getDataAll(String sql)
            throws Exception {
        JSONArray array = new JSONArray();
        Statement ps = null;
        ResultSet rs = null;
        Connection con = null;

        try {
            con = getConnection();
            ps = con.createStatement();
            rs = ps.executeQuery(sql);
            // 获取列数
            ResultSetMetaData metaData = rs.getMetaData();
            int columnCount = metaData.getColumnCount();
            // 遍历ResultSet中的每条数据
            while (rs.next()) {
                JSONObject jsonObj = new JSONObject();
                // 遍历每一列
                for (int i = 1; i <= columnCount; i++) {
                    String columnName = metaData.getColumnLabel(i);
                    String value = StringUtils.isBlank(rs.getString(columnName)) ? "" : rs.getString(columnName);
                    jsonObj.put(columnName, value);
                }
                array.add(jsonObj);
            }
        } catch (Exception e) {
            throw new Exception("ERROR:" + e.getMessage(), e);
        } finally {
            //关闭资源(先开后关)
            JdbcUtil.close(rs, ps, con);
        }
        return array;
    }
}

最后推荐一款纯免费的vip歌曲听歌软件,欢迎大家下载
免费视听软件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码出天空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值