Spring boot with Apache Hive

本文节选自《Netkiller Database 手札》

5.26. Spring boot with Apache Hive

5.26.1. Maven

			<properties>  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>  
  
<dependencies>  
    <dependency>  
        <groupId>org.springframework.boot</groupId>  
        <artifactId>spring-boot-starter-jdbc</artifactId>  
    </dependency>  
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-hadoop</artifactId>
        <version>2.4.0.RELEASE</version>
    </dependency> 
	<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
	<dependency>
	    <groupId>org.apache.hive</groupId>
	    <artifactId>hive-jdbc</artifactId>
	    <version>2.1.1</version>
	</dependency>
	<dependency>  
        <groupId>com.alibaba</groupId>  
        <artifactId>druid</artifactId>  
        <version>1.1.0</version>  
    </dependency> 
</dependencies>  

5.26.2. application.properties

hive 数据源配置项

			hive.url=jdbc:hive2://172.16.0.10:10000/default
hive.type: com.alibaba.druid.pool.DruidDataSource
hive.driver-class-name: org.apache.hive.jdbc.HiveDriver
hive.username=hive
hive.password=hive			

如果使用 yaml 格式 application.yml 配置如下

			 hive:  
  url: jdbc:hive2://172.16.0.10:10000/default
  driver-class-name: org.apache.hive.jdbc.HiveDriver 
  type: com.alibaba.druid.pool.DruidDataSource
  username: hive
  password: hive			

5.26.3. Configuration

			package cn.netkiller.api.config; 

@Configuration  
public class HiveDataSource {  
      
    @Autowired  
    private Environment env;  
  
    @Bean(name = "hiveJdbcDataSource")
    @Qualifier("hiveJdbcDataSource")
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(env.getProperty("hive.url"));
        dataSource.setDriverClassName(env.getProperty("hive.driver-class-name"));
        dataSource.setUsername(env.getProperty("hive.username"));
        dataSource.setPassword(env.getProperty("hive.password"));
        return dataSource;
    }

    @Bean(name = "hiveJdbcTemplate") 
    public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveJdbcDataSource") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

}

20.2. beeline

beeline 是 hive 提供的一个新的命令行工具,基于SQLLine CLI的JDBC客户端,beeline 与HiveServer2配合使用,支持嵌入模式和远程模式两种,可以像hive client一样访问本机的hive服务,也可以通过指定ip和端口访问远程hive服务。

hive 官方是推荐使用beeline,因为它还提供了更为友好的交互方式(类似mysql client)

连接远程主机

		[hadoop@localhost ~]$ /srv/apache-hive/bin/beeline -u jdbc:hive2://hadoop@localhost:10000
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/srv/apache-hive-2.1.1/lib/log4j-slf4j-impl-2.4.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/srv/apache-hadoop-2.8.0/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Connecting to jdbc:hive2://hadoop@localhost:10000
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 2.1.1)
17/06/29 23:05:35 [main]: WARN jdbc.HiveConnection: Request to set autoCommit to false; Hive does not support autoCommit=false.
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 2.1.1 by Apache Hive
0: jdbc:hive2://hadoop@localhost:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
+----------------+--+
1 row selected (1.332 seconds)
0: jdbc:hive2://hadoop@localhost:10000> use default;
No rows affected (0.038 seconds)
0: jdbc:hive2://hadoop@localhost:10000> show tables;
+-----------+--+
| tab_name  |
+-----------+--+
| invites   |
| member    |
| passwd    |
| t_hive    |
| v_test    |
| vipuser   |
+-----------+--+
6 rows selected (0.049 seconds)
0: jdbc:hive2://hadoop@localhost:10000> select * from member;
+--------------+-------------+-------------+---------------+--+
| member.name  | member.age  | member.sex  | member.phone  |
+--------------+-------------+-------------+---------------+--+
| Neo          | 30          | 1           | 13113668890   | 
+--------------+-------------+-------------+---------------+--+
No rows selected (1.137 seconds)
1: jdbc:hive2://hadoop@localhost:10000> 

如果 beeline 正常登陆,现在就可以访问 Hive 了 使用 hiveJdbcTempldate 方式跟传统 JDBC 一样。

原文发布于微信公众号 - Netkiller(netkiller-ebook)

原文发表时间:2017-07-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏全栈

拦截器的使用

1083
来自专栏陈树义

玩转 SSH(六):SpringMVC + MyBatis 架构搭建(注解版)

一、创建 SSMVCAnnoDemo 项目 点击菜单,选择“File -> New Project” 创建新项目。选择使用 archetype 中的 maven...

3627
来自专栏XAI

调用腾讯优图开放平台进行人脸识别-Java调用API实现

? 第一步:鉴权服务技术方案 Java代码实现如下 import java.util.Date; import com.baidu.aip.util...

20510
来自专栏一个会写诗的程序员的博客

这个 Log4j 的报错,会导致系统的 log4j.xml 配置(失效)被覆盖重置。SLF4J: Class path contains multiple SLF4J bindings

这个 Log4j 的报错,会导致系统的 log4j.xml 配置(失效)被覆盖重置。

673
来自专栏好好学java的技术栈

SpringMVC+RestFul详细示例实战教程(实现跨域访问)

**REST(Representational State Transfer)**,中文翻译叫“表述性状态转移”。是 Roy Thomas Fielding 在...

1404
来自专栏aoho求索

Spring中的事件驱动模型(二)

前文回顾 前一篇文章讲了Spring中的事件驱动模型相关概念。重点篇幅介绍了Spring的事件机制,Spring的事件驱动模型由事件、发布者和订阅者三部分组成,...

3328
来自专栏Android开发指南

6.请求网络步骤

34011
来自专栏Java开发

Spring MyBatis多数据源(同包)

创建基本的包 entity service dao 为了区分多数据源 一个用的是Mysql 一个是Oracle 方便测试,

352
来自专栏LuckQI

SpringBoot~SpringBatch 使用

Spring Batch 提供了大量可重用的组件,包括了日志、追踪、事务、任务作业统计、任务重启、跳过、重复、资源管理。对于大数据量和高性能的批处理任务,Spr...

833
来自专栏青青天空树

通过163smtp服务器向各大邮箱发送邮件(SOCKET编程)

注意如果是163向163发送邮件,邮件的发送者(mail.sender,不是真实发送者这个必须和认证的用户名相同)可以设置为任意的,这样接收者收到邮件时会看到该...

442

扫描关注云+社区