Home > Java > javaTutorial > How to integrate Presto query in Java

How to integrate Presto query in Java

王林
Release: 2023-04-20 18:46:08
forward
1761 people have browsed it

Java integrated presto query

1.pom file introduces related jar

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

2.application.yml configuration presto related

presto:
  url: xxxxxx
  username: root
  password: root
  port: 8088
Copy after login

3. Get connection and test

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sugon.xuanyuan.common.utils.StringUtils;
import com.sugon.xuanyuan.service.dataprovider.utils.JdbcUtil;
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;
    }
}
Copy after login

Java program accesses presto

How to integrate Presto query in Java

Introducing presto-jdbc in pom.xml

<dependency>
<groupId>com.facebook.presto</groupId>
<artifactId>presto-jdbc</artifactId>
<version>0.267</version>
</dependency>
Copy after login
/**
 * @ Author zhangsf
 * @CreateTime 2022/1/6 - 10:00 PM
 */
package presto;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
 
public class PrestoJdbcDemo {
    public static void main(String[] args) throws  Exception{
        //class.forname
        try {
            Class.forName("com.facebook.presto.jdbc.PrestoDriver");
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }
        //若presto没有设置SSL认证,只需填写用户名,不需要填写密码。
        Connection connection = DriverManager.getConnection("jdbc:presto://localhost:8080/mysql/tp_music","root",null);
        Statement stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery("select * from mysql.tp_music.singer limit 3");
        while (rs.next()) {
            System.out.println("name:"+rs.getString(2)+"  birth:"+rs.getString(5)+"  location:"+rs.getString(6));
        }
        rs.close();
        connection.close();
    }
}
Copy after login

The above is the detailed content of How to integrate Presto query in Java. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template