博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring boot with Hive
阅读量:6590 次
发布时间:2019-06-24

本文共 5402 字,大约阅读时间需要 18 分钟。

hot3.png

本文节选自《Netkiller Java 手札》 

作者:netkiller 他的网站: http://www.netkiller.cn, QQ: 13721218

5.29. Spring boot with Apache Hive

5.29.1. Maven

org.springframework.boot
spring-boot-starter-jdbc
org.springframework.data
spring-data-hadoop
2.5.0.RELEASE
org.apache.hive
hive-jdbc
2.3.0
org.eclipse.jetty.aggregate
*
org.apache.tomcat
tomcat-jdbc
8.5.20

5.29.2. application.properties

hive 数据源配置项

hive.url=jdbc:hive2://172.16.0.10:10000/defaulthive.driver-class-name=org.apache.hive.jdbc.HiveDriverhive.username=hadoophive.password=

用户名是需要具有 hdfs 写入权限,密码可以不用写

如果使用 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.29.3. Configuration

package cn.netkiller.config;import org.apache.tomcat.jdbc.pool.DataSource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.env.Environment;import org.springframework.jdbc.core.JdbcTemplate;@Configurationpublic class HiveConfig {	private static final Logger logger = LoggerFactory.getLogger(HiveConfig.class);	@Autowired	private Environment env;	@Bean(name = "hiveJdbcDataSource")	@Qualifier("hiveJdbcDataSource")	public DataSource dataSource() {		DataSource dataSource = new DataSource();		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"));		logger.debug("Hive DataSource");		return dataSource;	}	@Bean(name = "hiveJdbcTemplate")	public JdbcTemplate hiveJdbcTemplate(@Qualifier("hiveJdbcDataSource") DataSource dataSource) {		return new JdbcTemplate(dataSource);	}}

你也可以使用 DruidDataSource

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);    }}

5.29.4. CURD 操作实例

Hive 数据库的增删插改操作与其他数据库没有什么不同。

package cn.netkiller.web;import java.util.Iterator;import java.util.List;import java.util.Map;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controller@RequestMapping("/hive")public class HiveController {	private static final Logger logger = LoggerFactory.getLogger(HiveController.class);	@Autowired	@Qualifier("hiveJdbcTemplate")	private JdbcTemplate hiveJdbcTemplate;	@RequestMapping("/create")	public ModelAndView create() {		StringBuffer sql = new StringBuffer("create table IF NOT EXISTS ");		sql.append("HIVE_TEST");		sql.append("(KEY INT, VALUE STRING)");		sql.append("PARTITIONED BY (CTIME DATE)"); // 分区存储		sql.append("ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' "); // 定义分隔符		sql.append("STORED AS TEXTFILE"); // 作为文本存储		// drop table		// StringBuffer sql = new StringBuffer("DROP TABLE IF EXISTS ");		// sql.append("HIVE_TEST1");		logger.info(sql.toString());		hiveJdbcTemplate.execute(sql.toString());		return new ModelAndView("index");	}	@RequestMapping("/insert")	public String insert() {		hiveJdbcTemplate.execute("insert into hive_test(key, value) values('Neo','Chen')");		return "Done";	}	@RequestMapping("/select")	public String select() {		String sql = "select * from HIVE_TEST";		List
> rows = hiveJdbcTemplate.queryForList(sql); Iterator
> it = rows.iterator(); while (it.hasNext()) { Map
row = it.next(); System.out.println(String.format("%s\t%s", row.get("key"), row.get("value"))); } return "Done"; } @RequestMapping("/delete") public String delete() { StringBuffer sql = new StringBuffer("DROP TABLE IF EXISTS "); sql.append("HIVE_TEST"); logger.info(sql.toString()); hiveJdbcTemplate.execute(sql.toString()); return "Done"; }}

转载于:https://my.oschina.net/neochen/blog/1527308

你可能感兴趣的文章
Python2.7升级到3.0 HTMLTestrunner报错解决方法
查看>>
Redis介绍以及安装(Linux)
查看>>
FreeBSD下php-mbstring的安装
查看>>
去掉VS2012中的红色波浪下划线
查看>>
[文档]关于接口文档的写法
查看>>
一次tensorflow的尝试
查看>>
建立Git版本库管理框架例子
查看>>
nginx防止部分DDOS攻击
查看>>
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字......
查看>>
number_format() 函数定义和用法
查看>>
Java8中聚合操作collect、reduce方法详解
查看>>
查看记录
查看>>
mybatis报ORA-00911: 无效字符
查看>>
Swift UIView动画animateWithDuration
查看>>
Maven 集成Tomcat插件
查看>>
css中的line-height问题
查看>>
nagios监控配置
查看>>
我的友情链接
查看>>
Linux运维学习笔记之二:常用命令1
查看>>
snort安装常见问题及解决方法
查看>>