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相关推荐

  1. Spring Boot 中使用 Hikari连接各类数据源

    Spring Boot 中使用 Hikari连接各类数据源 1,连接hive集群 HikariConfig中各属性设置 {"allowPoolSuspension": false, ...

  2. Spring Boot学习笔记 [完结]

    Spring Boot 文章目录 Spring Boot 1.微服务 1.1 什么是微服务? 1.2 单体应用架构 1.3 微服务架构 2. 第一个SpringBoot程序 2.1.原理 2.2 原理 ...

  3. Java零基础可以直接入门spring boot吗?

    不推荐.一般学习的路线是java基础,然后数据库,接着是spring,了解spring的核心思想,再学springmvc,之后才学springboot. 什么是Spring Boot Spring B ...

  4. spring boot项目 中止运行 最常用的几种方法

    spring boot项目 中止运行 最常用的几种方法: 1. 调用接口,停止应用上下文 @RestController public class ShutdownController impleme ...

  5. html+spring boot简单的ajax数据传输实现

    本篇讲解在前后端不分离情况下的html+spring boot的项目数据传输实现 首先,后台我写了三个接口 package com.demo.ajax.controller;import com.de ...

  6. Spring Boot整合Spring Data JPA操作数据

    一. Sping Data JPA 简介 Spring Data JPA 是 Spring 基于 ORM 框架.JPA 规范的基础上封装的一套 JPA 应用框架,底层使用了 Hibernate 的 J ...

  7. SpringBoot (八) :Spring Boot多数据源(JdbcTemplate)配置与使用

    什么是JdbcTemplate 为了使 JDBC 更加易于使用,Spring 在 JDBCAPI 上定义了一个抽象层, 以此建立一个JDBC存取框架. 作为 SpringJDBC 框架的核心, JDB ...

  8. 使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目

    使用最新版(2020)IntelliJ IDEA 新建 Spring Boot 2.0 项目 一:创建项目,并添加相应依赖 新建Project,并指定Project为Spring Initializr ...

  9. 狂神Spring Boot 员工管理系统 超详细完整实现教程(小白轻松上手~)

    [SpringBoot-web系列]前文: SpringBoot-web开发(一): 静态资源的导入(源码分析) SpringBoot-web开发(二): 页面和图标定制(源码分析) SpringBo ...

最新文章

  1. python hello world程序编写_编写高质量代码 改善Python程序的91个建议
  2. pku 1850 Code 组合数学排列组合的应用
  3. Django模型自定义查询管理器
  4. php程序设计简明教程
  5. 用 Python 下载抖音无水印视频
  6. 微软云服务器流量,使用 Visual Studio Mobile Center 进行真实用户度量 - Azure 流量管理器 | Microsoft Docs...
  7. linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发
  8. Solr Windows环境安装配置
  9. rocketmq 部署启动指南-Docker 版
  10. 微信小程序项目-出租屋管理系统
  11. 永久禁用software reporter 进程,占用高解决方法。【永久禁用software_reporter_tool.exe程序】
  12. python如何写日志_python写日志
  13. 内网安全-隧道穿透漫游(二)
  14. 数据开发者启示录:《我,阿里P7,找不到工作》
  15. 驱动精灵 v9.61 去广告最终版绿色清爽单文件
  16. Hbuildx 使用vue打包的App实现微信分享功能
  17. 半导体栅极侧墙工艺的来龙去脉
  18. 详解华为云基因容器服务GCS
  19. 【求职】陌陌 Java 方向面经
  20. Bugtags 远程配置功能介绍

热门文章

  1. 实例分割小工具labelme转coco
  2. Istio流量管理实践之(3): 基于Istio实现流量对比分析 1
  3. 深入详解Java线程池——ThreadPoolExecutor
  4. PHP的php://input和$HTTP_RAW_POST_DATA 和$_POST的关系
  5. 调用函数的ALV、面向对象的ALV设置带选择列
  6. SpaceBase – 基于 Sass 的响应式 CSS 框架
  7. flex mx:TabNavigator进行选项卡切换,需要进行交互时。发生Error #1009错误
  8. MVC 之Action
  9. 设计模式系列-代理模式
  10. Q108:浅析PBRT-V3的代码结构