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

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

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

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

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

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"); // 作为文本存储 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"; }}

转载地址:http://mggmb.baihongyu.com/

你可能感兴趣的文章
SEO技巧中你可能没有注意的细节(转)
查看>>
微软开始二代Windows Live 不见Cloud OS踪影
查看>>
创建ISAPI扩展(转)
查看>>
病毒及木马预警一周播报(06.04.17~04.23)(转)
查看>>
黑客口述:我的第一台3389肉鸡的经历(转)
查看>>
关于 cleanup stack 和 two phase consturction [1](转)
查看>>
Oracle数据导入导出imp/exp (转)
查看>>
如何构建固定网(PSTN)短消息系统(转)
查看>>
Delphi文件管理(三)(转)
查看>>
关于网线的一些问题的解答(转)
查看>>
深度分析Win 2003自动升级补丁功能(转)
查看>>
使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(转)
查看>>
来访者地址统计,很好的一个程序!(转)
查看>>
UpdateWindow函数 (转)
查看>>
移动通信的主要测量指标及注意事项(转)
查看>>
无盘网络正确网络配置建议-减少卡机蓝屏关键(转)
查看>>
如何在Delphi中调用oracle的存储过程返回数据集(转)
查看>>
ASP指南:ADO/SQL(数据存取) (转)
查看>>
微软将在HEC上发布Windows 2003 64-bit(转)
查看>>
保护SQL Server数据库的十大绝招(转)
查看>>