Presto Jdbc

标签(空格分隔): Presto

一, 建立连接

传统的JDBC方式类似,建立PrestoConnection”连接“,并且通过unwrap方法将connection转换为PrestoConnection。实际上是赋值一些基本信息,并且建立新的OkHttpClient。

String url = "jdbc:presto://ip:port/hive/“; //默认连接hive

String user = "PRESTO";

Properties properties = new Properties();

properties.setProperty("user", user);

PrestoConnection conn = DriverManager.getConnection(prestoUrl, properties).unwrap(PrestoConnection.class);

conn.setClientInfo("ApplicationName", "group_1");
 //指定资源组

conn.setSessionProperty("query_max_total_memory", "1GB"); //指定此次操作可使用的presto最大内存大小

conn.setSessionProperty("","");类似的属性可以在 presto Client 中进入查看:

SET SESSION;

即可显示 可以在SESSION 级别修改的 属性。

二,建立Statement执行语句

指定SQL执行的相关属性。在设置监听器的时候需要注意!presto的任务监听器会阻塞presto任务的执行,所以不建议在监听器中做任何耗时的操作。如果需要使用监听器记录presto任务的状态,可自己启动一个线程使用prestoResultSet.getStats()获取当前任务状态,监听任务进度。

PrestoStatement statement = conn.createStatement().unwrap(PrestoStatement.class);

statement.setQueryTimeout(10); 
//设置SQL语句可执行的时长(秒)

statement.setLargeMaxRows(1000);
 //设置可获取结果集的大小(分批获取,直到超过此值后结束)

AtomicReference queryId = new AtomicReference<>();

statement.setProgressMonitor(queryStats -> { //设置监听器(可选),可监听presto任务执行状况

queryId.set(queryStats.getQueryId()); //获取presto任务ID(可用该ID终止任务)

});

PrestoResultSet resultSet = statement.executeQuery("select * from table").unwrap(PrestoResultSet.class);

三,获取结果集

将结果集转换为json列表。这里需要注意的是resultSet.next()方法,Presto服务端并不会一次全部把结果返回给客户端,而是不断的通过next()方法调用HTTP接口获取(每次获取结果集大小默认1mb),直到PrestoClient状态不为Running时结束。

List results = new ArrayList<>();

int count = resultSet.getMetaData().getColumnCount();

String[] columns = new String[count];

for (int i = 0; i < count; i++) {

columns[i] = resultSet.getMetaData().getColumnName(i + 1);

}

while (resultSet.next()) {

JSONObject jsonObject = new JSONObject();

for (int j = 0; j < count; j++) {

jsonObject.put(columns[j], resultSet.getString(j + 1));

}

results.add(jsonObject);

}

presto java_Presto Jdbc相关推荐

  1. idea连接presto

    前提:商业版idea,社区版不可以 类型选择H2 填写连接信息,网上下载一个presto的jdbc驱动,自定义添加,然后测试就可以了 参考 Presto DB Support. Password Pr ...

  2. 常用数据库选型!你做对了吗?

    点击关注公众号,回复"1024"获取2TB学习资源! 影响数据库选择的因素 数据量:是否海量数据,单表数据量太大会考验数据库的性能 数据结构:结构化 (每条记录的结构都一样) 还是 ...

  3. 数据库,我们该如何选型?

    更多内容关注微信公众号:fullstack888 影响数据库选择的因素 数据量:是否海量数据,单表数据量太大会考验数据库的性能 数据结构:结构化 (每条记录的结构都一样) 还是非结构化的 (不同记录的 ...

  4. 大数据【学习计划 or 复习计划】根据【云和 + 达内 + 千锋】课程内容整理

    前言 无论学习或者复习都是需要一个计划大纲的,这里根据三家教育机构的学习计划进行整理,可作为学习计划或复习计划. 云和 第一阶段:大数据开发语言基础 主要内容 核心能力培养 基本程序逻辑.面向对象深入 ...

  5. 项目四推荐系统源码(十二万字)

    目录 背景指路 0 pom.xml 大概的项目框架 1.0 资源 1.1 sparkml2pmml.properties 1.2 core-site.xml 1.3 hdfs-site.xml 1.4 ...

  6. 大数据Presto(四):Presto自定义函数和JDBC连接

    文章目录 Presto自定义函数和JDBC连接 一.Presto 自定义函数

  7. spark sql合并小文件_如何比较Hive,Spark,Impala和Presto?

    Spark,Hive,Impala和Presto是基于SQL的引擎,Impala由Cloudera开发和交付.在选择这些数据库来管理数据库时,许多Hadoop用户会感到困惑.Presto是一个开放源代 ...

  8. Presto入门介绍

    最近在调研presto查询引擎的模块,先了解了下大体的框架和基本知识.这篇文章适合入门的童鞋看,因此转载了,用于以后查询使用. 1, Presto基本认识 1.1 定义  Presto是一个分布式的查 ...

  9. presto联合查询mysql和ES_presto-mysql/elasticsearch6.0.0安装部署测试,异种数据源关联查询入门实践...

    本文简单记录一次实践使用过程,涉及presto-mysql,presto-elasticsearch,文中参数未做注释,请参考官方文档,希望能帮到大家 1 下载安装 presto-0.228 < ...

最新文章

  1. 2022-2028年中国大飞机项目产业链分析及投资咨询报告
  2. IDEA创建maven项目报错解决:Failed to create a Maven project: 'C:/Users/../IdeaProjects/../pom.xml' already e
  3. ubuntu14 安装JDK
  4. Java程序执行过程
  5. 中汽协谈芯片短缺:芯片价格或上涨,部分车企在明年会受较大影响
  6. gVIM+ctags+Taglist+winmanager搭建IDE
  7. 使用Google Guice消除实例之间的歧义
  8. 智商情商哪个重要_《所谓逆商高,就是心态好》:逆商,比情商和智商更重要...
  9. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (19) - 系统代理
  10. bootstrap中如何使input中的小图标获得点击事件
  11. 题解 P2163 SHOI2007 园丁的烦恼
  12. 区分大小屏幕_新GL8陆尊30多万,四块屏幕,科技感堪比奔驰,你还选埃尔法吗?...
  13. Jenkins安装后设置,访问http://localhost:8080进入jenkins解锁,完成安装后的配置
  14. ISO14000环境管理体系认证
  15. Matlab中的fspecial函数
  16. 汪磊Node基础、Node入门、黑马Node
  17. php提交表单怎么验证必填,PHP 表单验证 - 必填字段
  18. 湖南计算机考试题库,湖南省计算机等级考试编程题题库之十六
  19. java方法集:大写金额转换数字
  20. 如何把网站从万网转到百度的服务器,百度域名服务上线“域名转入”功能 附转入教程...

热门文章

  1. Python爬取网页
  2. 图像变换dpi(tif->jpg),直方图均衡化,腐蚀膨胀,分水岭,模板匹配,直线检测
  3. git远程分支修改名字
  4. 王爽 汇编语言第三版 第8章( 寻址方式 ) --- 数据处理的两个问题
  5. adb(Android debug bridge)命令
  6. vue 实现数据滚动显示_vue实现动态添加数据滚动条自动滚动到底部的示例代码...
  7. 计算机系答辩麻烦,计算机专业的你,答辩时有多卑微?
  8. JAVA进阶教学之(序列化和反序列化)
  9. IOC容器(底层原理解读)
  10. 驱动api_消费者驱动契约已死?