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.bootgroupId>
    	<artifactId>spring-boot-starter-jdbcartifactId>
    	<exclusions>
    		<exclusion>
    			<groupId>org.apache.tomcatgroupId>
    			<artifactId>tomcat-jdbcartifactId>
    		exclusion>
    	exclusions>
    dependency>
    <dependency>
    	<groupId>com.zaxxergroupId>
    	<artifactId>HikariCPartifactId>
    	<version>2.7.4version>
    dependency>
    
  2. 配置中心的配置
    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
    
  3. 关于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);
    	}
    }
    
  4. 最后一步,愉快的使用,就是这么的简单
    @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);
    	}
    }
    

你可能感兴趣的:(大数据学习)