Hive使用druid做连接池代码实现
- 配置文档
hive_jdbc_url=jdbc:hive2://192.168.0.22:10000/default
hive.dbname=xxxxx
hive_jdbc_username=root
hive_jdbc_password=123456 #配置初始化大小、最小、最大
hive_initialSize=20
hive_minIdle=20
hive_maxActive=500 #配置获取连接等待超时的时间
hive_maxWait=60000
- Jar包引入(Maven)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.26</version>
</dependency>
- 代码实现
public class HiveDataSourceUtil {
private static DruidDataSource hiveDataSource = new DruidDataSource();
public static Connection conn = null;
private static final Logger log = LoggerFactory.getLogger(HiveDataSourceUtil.class);
public static DruidDataSource getHiveDataSource() {
if(hiveDataSource.isInited()){
return hiveDataSource;
}
try {
Properties dsProp = PropertiesUtil.getDataSourceProp();
//基本属性 url、user、password
hiveDataSource.setUrl(dsProp.getProperty("hive_jdbc_url"));
hiveDataSource.setUsername(dsProp.getProperty("hive_jdbc_username"));
hiveDataSource.setPassword(dsProp.getProperty("hive_jdbc_password"));
//配置初始化大小、最小、最大
hiveDataSource.setInitialSize(Integer.parseInt(dsProp.getProperty("hive_initialSize")));
hiveDataSource.setMinIdle(Integer.parseInt(dsProp.getProperty("hive_minIdle")));
hiveDataSource.setMaxActive(Integer.parseInt(dsProp.getProperty("hive_maxActive")));
//配置获取连接等待超时的时间
hiveDataSource.setMaxWait(Integer.parseInt(dsProp.getProperty("hive_maxWait")));
//配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
hiveDataSource.setTimeBetweenEvictionRunsMillis(60000);
//配置一个连接在池中最小生存的时间,单位是毫秒
hiveDataSource.setMinEvictableIdleTimeMillis(300000);
// hiveDataSource.setValidationQuery("select * from xxxx");
hiveDataSource.setTestWhileIdle(false);
// hiveDataSource.setTestOnBorrow(false);
// hiveDataSource.setTestOnReturn(false);
//打开PSCache,并且指定每个连接上PSCache的大小
hiveDataSource.setPoolPreparedStatements(true);
hiveDataSource.setMaxPoolPreparedStatementPerConnectionSize(20);
//配置监控统计拦截的filters
// hiveDataSource.setFilters("stat");
hiveDataSource.init();
} catch (SQLException e) {
e.printStackTrace();
closeHiveDataSource();
}
return hiveDataSource;
}
/**
*@Description:关闭Hive连接池
*/
public static void closeHiveDataSource(){
if(hiveDataSource != null){
hiveDataSource.close();
}
}
/**
*
*@Description:获取Hive连接
*@return
*/
public static Connection getHiveConn(){
try {
hiveDataSource = getHiveDataSource();
conn = hiveDataSource.getConnection();
} catch (SQLException e) {
log.error("--"+e+":获取Hive连接失败!");
}
return conn;
}
/**
*@Description:关闭Hive数据连接
*/
public static void closeConn(){
try {
if(conn != null){
conn.close();
}
} catch (SQLException e) {
log.error("--"+e+":关闭Hive-conn连接失败!");
}
}
public static void main(String[] args) throws Exception {
DataSource ds = HiveDataSourceUtil.getHiveDataSource();
Connection conn = ds.getConnection();
Statement stmt = null;
if(conn == null){
System.out.println("null");
}else{
System.out.println("conn");
stmt = conn.createStatement();
ResultSet res = stmt.executeQuery("select * from xxxx t");
int i = 0;
while(res.next()){
if(i<10){
System.out.println(res.getString(1));
i++;
}
}
}
stmt.close();
conn.close();
}
}
- 服务端服务开启
打开远程端口:hive --service hiveserver2 &
PS自己不懂的话,可以找运维人员
Hive使用druid做连接池代码实现的更多相关文章
- DBCP、c3p0、Druid三大连接池区别
DBCP.c3p0.Druid三大连接池区别 一.连接池优势 如果一个项目中如果需要多个连接,如果一直获取连接,断开连接,这样比较浪费资源: 如果创建一个池,用池来管理Connection,这样就可以 ...
- SpringBoot整合Druid数据连接池
SpringBoot整合Druid数据连接池 Druid是什么? Druid是Alibaba开源的的数据库连接池.Druid能够提供强大的监控和扩展功能. 在哪里下载druid maven中央仓库: ...
- spring 5.x 系列第6篇 —— 整合 mybatis + druid 连接池 (代码配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 项目目录结构 1.创建maven工程,除了Spring基本依赖外,还需要导 ...
- 【SpringBoot笔记】SpringBoot整合Druid数据连接池
废话少说,按SpringBoot的老套路来. [step1]:添加依赖 <!-- 数据库连接池 --> <dependency> <groupId>com.alib ...
- c3p0,dbcp与druid 三大连接池的区别[转]
说到druid,这个是在开源中国开源项目中看到的,说是比较好的数据连接池.于是乎就看看.扯淡就到这. 下面就讲讲用的比较多的数据库连接池.(其实我最先接触的是dbcp这个) 1)DBCP DBCP是一 ...
- node-mysql中的连接池代码学习
node-mysql是一个node.js下的mysql驱动,前段时间在处理连接池的问题上遇到了连接不释放的疑难杂症,虽已解决,但仍需总结经验避免下次重蹈覆辙.下面是node-mysql中的连接池的部分 ...
- JDBC创建mysql连接池代码
1.底层实现类(DBConnection) package JDBC.JDBCPool.MyJDBCPool; import java.sql.Connection; import java.sql. ...
- spring boot配置druid数据连接池
Druid是阿里巴巴开源项目中一个数据库连接池. Druid是一个jdbc组合,包含三个部分, 1.DruidDriver代理Driver,能够提供基于Filter-Chain模式得插件体系2.Dru ...
- 【Mysql】SpringBoot阿里Druid数据源连接池配置
一.pom.xml添加 <!-- 配置数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> &l ...
随机推荐
- Shell学习笔记——算数运算与条件测试
算数运算 1. 使用let命令 #!/sbin/bash var1=2 var2=3 let sum=var1+var2 echo $sum 使用let命令式,变量前不需要加$号 只用于整数运算,不适 ...
- Linux:网络配置
网络配置 1.网卡配置 vim /etc/sysconfig/network-scripts/ifcfg-eth0 1DEVICE=eth0 2 HWADDR=00:0C:29:93:41:2B 3 ...
- Tornado 概述
Tornado 概述 1 基本概念 像其他web框架一样, tornado也包括了以下内容: 基本构成: a 路由系统 b 视图 获取请求数据 返回数据 c 模板语言 模板基本使用 自定义函数 利用组 ...
- I2S音频总线学习(二)I2S总线协议
http://blog.csdn.net/ce123_zhouwei/article/details/6919954
- GPU编程自学5 —— 线程协作
深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...
- 使用stringstream类
当需要格式化int类型为字符串时,可以使用这个类, 需要包含这个文件头: #include <sstream> 然后这样使用: //打开保存进度的RPG文件. std::stringstr ...
- Faster R-CNN改进篇(一): ION ● HyperNet ● MS CNN
一. 源起于Faster 深度学习于目标检测的里程碑成果,来自于这篇论文: Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time ob ...
- Objective C - 2 - 随机数,可变字符串,字符串,SubString
int main(int argc, const char * argv[]) { @autoreleasepool { NSString *outputString = @"1234567 ...
- 6.二元查找树的后序遍历结果[PostOrderOfBST]
[题目] 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果.如果是返回true,否则返回false. 例如输入5.7.6.9.11.10.8,由于这一整数序列是如下树的后序遍历结果: 8 ...
- Android中的关于MDM中的几个方法举例
Android中的关于MDM中的几个方法举例 首先介绍一下MDM是什么的缩写,MDM是什么? MDM 是 (Mobile Device Management )的缩写,中文翻译过来就是移动设备管理.随 ...