Hive的连接池-HikariCP

Posted Java实战笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive的连接池-HikariCP相关的知识,希望对你有一定的参考价值。

hive 连接池 HikariCP 

前言:之前分享过一篇使用druid管理Hive的连接池,因为我们的大部分的项目是用的都是druid,所以到Hive这块,第一个想到的也是druid,不过作为一个喜欢不断折腾的小青年,最近又尝试了HikariCP,使用起来比druid要简单多了,而且性能上比druid也要强一些。

  1. 先看一下我的pom文件,因为我们的spring-cloud使用的是Edgware.SR3这个版本,spring默认使用的连接池还不是Hikari,所以这里要单独引入HikariCP,spring-boot 2.0就已经使用HikariCP作为默认的连接池,所以使用2.0版本额小伙伴就不用这么麻烦了

 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-jdbc</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>com.zaxxer</groupId>
    <artifactId>HikariCP</artifactId>
    <version>2.7.4</version>
</dependency>
  1. 配置中心的配置

spring:
  hive:
    minimum-idle: 0
    maximum-pool-size: 2
    max-lifetime: 600000
    connection-timeout: 60000
    username: root
    password: 123456
    jdbc-url: jdbc:hive2://hadoop03:10001/default;transportMode=http;httpPath=cliservice
    driver-class-name: org.apache.hive.jdbc.HiveDriver
    testOnBorrow: false
  1. 关于DataSourceJdbcTemplate的配置文件

@Configuration
public class JdbcConfiguration {

    @Bean(name = "hiveJdbcDataSource")
    @Primary
    @ConfigurationProperties(prefix = "spring.hive")
    public DataSource hiveDataSource(){
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "hiveJdbcTemplate")
    public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveJdbcDataSource") DataSource dataSource){
        return new JdbcTemplate(dataSource);
    }
}
  1. 最后一步,愉快的使用,就是这么的简单

@Component
public class CommonHiveDao {
    private final Logger logger = LoggerFactory.getLogger(this.getClass());
    @Autowired
    @Qualifier("hiveJdbcTemplate")
    JdbcTemplate hiveJdbcTemplate;

    public HiveResponse execute(HiveBean bean){
        hiveJdbcTemplate.execute(bean.getHql());
        HiveResponse hiveResponse = HiveResponse.successResult();
        return hiveResponse;
    }

    public HiveResponse executeQuery(HiveBean bean){
        List<Map<String, Object>> result = hiveJdbcTemplate.queryForList(bean.getHql());
        return HiveResponse.successResult().setListResult(result);
    }
}


以上是关于Hive的连接池-HikariCP的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 数据库连接池 HikariCP

P3-1 数据库连接池HikariCP

HikariCP Druid比较

在SpringBoot中使用HikariCP连接池

有关Hikaricp连接池配置的解读

HikariCP 连接池 - '活动' - 如何调试?