Spring boot with Hive
2019独角兽企业重金招聘Python工程师标准>>>
本文节选自《Netkiller Java 手札》
作者:netkiller 他的网站: http://www.netkiller.cn, QQ: 13721218
5.29. Spring boot with Apache Hive
5.29.1. Maven
<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.5.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.3.0</version><exclusions><exclusion><groupId>org.eclipse.jetty.aggregate</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.apache.tomcat</groupId><artifactId>tomcat-jdbc</artifactId><version>8.5.20</version></dependency>
5.29.2. application.properties
hive 数据源配置项
hive.url=jdbc:hive2://172.16.0.10:10000/default hive.driver-class-name=org.apache.hive.jdbc.HiveDriver hive.username=hadoop hive.password=
用户名是需要具有 hdfs 写入权限,密码可以不用写
如果使用 yaml 格式 application.yml 配置如下
hive: url: jdbc:hive2://172.16.0.10:10000/defaultdriver-class-name: org.apache.hive.jdbc.HiveDriver type: com.alibaba.druid.pool.DruidDataSourceusername: hivepassword: 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;@Configuration public class HiveConfig {private static final Logger logger = LoggerFactory.getLogger(HiveConfig.class);@Autowiredprivate 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<Map<String, Object>> rows = hiveJdbcTemplate.queryForList(sql);Iterator<Map<String, Object>> it = rows.iterator();while (it.hasNext()) {Map<String, Object> 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
Spring boot with Hive相关推荐
- Spring Boot 中使用 Hikari连接各类数据源
Spring Boot 中使用 Hikari连接各类数据源 1,连接hive集群 HikariConfig中各属性设置 {"allowPoolSuspension": false, ...
- Spring Boot学习笔记 [完结]
Spring Boot 文章目录 Spring Boot 1.微服务 1.1 什么是微服务? 1.2 单体应用架构 1.3 微服务架构 2. 第一个SpringBoot程序 2.1.原理 2.2 原理 ...
- Java零基础可以直接入门spring boot吗?
不推荐.一般学习的路线是java基础,然后数据库,接着是spring,了解spring的核心思想,再学springmvc,之后才学springboot. 什么是Spring Boot Spring B ...
- spring boot项目 中止运行 最常用的几种方法
spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...
- html+spring boot简单的ajax数据传输实现
本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...
- Spring Boot整合Spring Data JPA操作数据
一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...
- SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用
什么是JdbcTemplate 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架. 作为 SpringJDBC 框架的核心, JDB ...
- 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目
使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目 一:创建项目,并添加相应依赖 新建Project,并指定Project为Spring Initializr ...
- 狂神Spring Boot 员工管理系统 超详细完整实现教程(小白轻松上手~)
[SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...
最新文章
- python hello world程序编写_编写高质量代码 改善Python程序的91个建议
- pku 1850 Code 组合数学排列组合的应用
- Django模型自定义查询管理器
- php程序设计简明教程
- 用 Python 下载抖音无水印视频
- 微软云服务器流量,使用 Visual Studio Mobile Center 进行真实用户度量 - Azure 流量管理器 | Microsoft Docs...
- linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发
- Solr Windows环境安装配置
- rocketmq 部署启动指南-Docker 版
- 微信小程序项目-出租屋管理系统
- 永久禁用software reporter 进程,占用高解决方法。【永久禁用software_reporter_tool.exe程序】
- python如何写日志_python写日志
- 内网安全-隧道穿透漫游(二)
- 数据开发者启示录:《我,阿里P7,找不到工作》
- 驱动精灵 v9.61 去广告最终版绿色清爽单文件
- Hbuildx 使用vue打包的App实现微信分享功能
- 半导体栅极侧墙工艺的来龙去脉
- 详解华为云基因容器服务GCS
- 【求职】陌陌 Java 方向面经
- Bugtags 远程配置功能介绍
热门文章
- 实例分割小工具labelme转coco
- Istio流量管理实践之(3): 基于Istio实现流量对比分析 1
- 深入详解Java线程池——ThreadPoolExecutor
- PHP的php://input和$HTTP_RAW_POST_DATA 和$_POST的关系
- 调用函数的ALV、面向对象的ALV设置带选择列
- SpaceBase – 基于 Sass 的响应式 CSS 框架
- flex mx:TabNavigator进行选项卡切换,需要进行交互时。发生Error #1009错误
- MVC 之Action
- 设计模式系列-代理模式
- Q108:浅析PBRT-V3的代码结构