在springboot中使用jdbcTemplate(7)-hivejdbc

在springboot中使用jdbcTemplate

在springboot中使用jdbcTemplate(2)-多数据源

在springboot中使用jdbcTemplate(3)

在springboot中使用jdbcTemplate(4)

在springboot中使用jdbcTemplate(5)

在springboot中使用jdbcTemplate(6)

大家都在知道,Java原生的jdbc有很多冗余代码,spring-jdbc在此原生的jdbc基础上进行了包装,包装成了JdbcTemplate.

以往,我们都是用JdbcTemplate连接关系型数据库,那hive可以用JdbcTemplate吗?

答案是肯定的!

首先application.properties定义连接四要素

#hive库
spring.datasource.hive.username=
spring.datasource.hive.password=
spring.datasource.hive.driverClassName=org.apache.hive.jdbc.HiveDriver
spring.datasource.hive.url=jdbc:hive2://host:10000/default?useUnicode=true&characterEncoding=utf8&useSSL=false

在pom文件加入相关的驱动jar包

复制代码
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.1.0</version>
        </dependency>
复制代码

有时候在springboot项目中加入hive-jdbc会报错

Error creating bean with name 'tomcatServletWebServerFactory'

这是因为hive-jdbc里面的jetty跟springboot的jetty冲突了,需要解决jar包依赖问题,重新引入hive-jdbc的pom文件,排除冲突的jar

复制代码
<dependency>
            <groupId>org.apache.hive</groupId>
            <artifactId>hive-jdbc</artifactId>
            <version>2.3.0</version>
            <exclusions>
                <exclusion>
                    <groupId>org.eclipse.jetty.aggregate</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
复制代码

 备注:hive-jdbc的版本要与hive本身的版本匹配,太高会报错

Required field 'client_protocol' is unset!

 

创建HiveJdbcTemplate bean

复制代码
@Configuration
public class HiveConfig {
    @Value("${spring.datasource.hive.url}")
    String url;
    @Value("${spring.datasource.hive.username}")
    String username;
    @Value("${spring.datasource.hive.password}")
    String password;
    @Value("${spring.datasource.hive.driverClassName}")
    String driverClassName;

    @Bean(name = "hiveDataSource")
    @Qualifier(value = "hiveDataSource")
    public DataSource createDataSource() {
        return DataSourceBuilder.create().type(HikariDataSource.class)
                .driverClassName(driverClassName)
                .url(url)
                .username(username)
                .password(password)
                .build();
    }


    @Bean(name = "hiveJdbcTemplate")
    public JdbcTemplate jdbcTemplate(@Qualifier("hiveDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }
}
复制代码

好了,大功告成。

posted @   Mars.wang  阅读(678)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
历史上的今天:
2018-06-20 spring boot单元测试之RestTemplate(三)——api详解
2018-06-20 spring boot单元测试之RestTemplate(二)
点击右上角即可分享
微信分享提示