presto sql 报错_Java Jdbc接入Presto的样例

本文介绍了使用JDBC接入Presto时遇到的常见错误及其解决方案,包括版本问题、认证失败(用户名或密码错误)、SSL设置错误(证书路径问题)。通过这些内容,帮助读者理解如何正确配置和连接到Presto。
摘要由CSDN通过智能技术生成

前言:


最近在忙着整机器学习的可视化编辑界面,被前端差点搞死98f189144d3f5f52f2f57e7c076b49ff.png,后面会出一期介绍一下基于Antv G6如何开发可拖拽流程图。而今天要和大家分享的是如何采用JDBC进行Presto的接入。

Presto是什么?

由于本人也是刚接触了解 Presto,详细的介绍,推荐大家直接去撸官网,很强大,大数据必备!!! https://prestodb.io/docs/current/
参考:https://blog.csdn.net/cakexuexi/article/details/80820170Presto是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用.和大家熟悉的Mysql相比:首先Mysql是一个数据库,具有存储和计算分析能力,而Presto只有计算分析能力;其次数据量方面,Mysql作为传统单点关系型数据库不能满足当前大数据量的需求,于是有各种大数据的存储和分析工具产生,Presto就是这样一个可以满足大数据量分析计算需求的一个工具。

JDBC连接demo
出于权限安全考虑,我司在进行Presto接入的时候,规定了一定要采用SSL认证,具体的认证方式可以参考官网,在这里就不在赘述。连接demo如下:
//pom依赖<dependency>      <groupId>com.facebook.prestogroupId>      <artifactId>presto-jdbcartifactId>      <version>0.240.1version>dependency>
import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.Properties;public class LdapSSLSimple {    private static String JDBC_DRIVER = "com.facebook.presto.jdbc.PrestoDriver";    private static String CONNECTION_URL ="jdbc:presto://cdh85-110:8443";    static {        try {            Class.forName(JDBC_DRIVER);        } catch (Exception e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        Connection connection = null;        Properties properties = new Properties();        properties.setProperty("user", "bf_qd");        properties.setProperty("password", "7F8#0L$xviP4S3");        properties.setProperty("SSL", "true");        properties.setProperty("SSLKeyStorePath", "/Users/jiangyu/presto_keystore.jks");        properties.setProperty("SSLKeyStorePassword", "Abc123456");        try {            connection = DriverManager.getConnection(CONNECTION_URL,properties);            Statement stmt = conn.createStatement();            ResultSet rs = stmt.executeQuery("show CATALOGS");            //在这里为啥我加这么一个查询语句呢?因为很奇怪,实际测试连接的时候,不管你前面如何配置,这个connection都不会报错,这不是扯蛋么,所以加了这么一个通用的查询,来测试到底连没有连的上。            while (rs.next()) {                System.out.println(rs.getString(1));            }        } catch (Exception e) {            e.printStackTrace();        }     }}

常见错误:


  • The datetime zone id 'GMT+08:00' is not recognised

    原因就在于你的pom引入的版本有问题,按官网最新的应该就没啥大问题。

  •  Authentication failed: Access Denied: Invalid credentials

    这个就说明你的用户名或者密码搞错了。

  •  Error setting up SSL: /presto_keystore.jks (No such file or directory)

    这个错误很明显,你的认证证书的路径加载错了,这个其实也是一个坑,虚拟机环境下部署的话,问题不是很大,你把文件固定在一个地方就行,假如是在容器中,你就得每次在打镜像的时候加上它了。

总结:


偷懒了一阵,继续跟上~加油!

c2580648a4872778d2d5121cfdc8f0ee.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值