SpringBoot连接Hive实现自助取数
Hive系列文章
- Hive表的基本操作
- Hive中的集合数据类型
- Hive动态分区详解
- hive中orc格式表的数据导入
- Java通过jdbc连接hive
- 通过HiveServer2访问Hive
- SpringBoot连接Hive实现自助取数
- hive关联hbase表
- Hive udf 使用方法
- Hive基于UDF进行文本分词
- Hive窗口函数row number的用法
- 数据仓库之拉链表
公司运营免不了让我们数据做一些临时取数,这些取数有时候是重复的,或者可以做成可配置的。需要开发成界面,供他们选择,自然想到SpringBoot
连接Hive
,可以把取数做成一键生成,或者让他们自己写sql
,通常大多人是不会sql
的。
1. 需要的依赖配置
为了节省篇幅,这里给出hiveserver2
方式连接hive
主要的maven
依赖,父工程springboot
依赖省略。
application-test.yml
配置数据库连接,这里用的是druid
连接池管理hiveserver2
连接,也是没有问题的。
# Spring配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 多数据源**省略若干***
# hive数据源
slave3:
# 从数据源开关/默认关闭
enabled: true
driverClassName: org.apache.hive.jdbc.HiveDriver
url: jdbc:hive2://cdh:10000/default
username: bigdata
password: bigdata
2. 代码实现
代码实现跟其它程序一样,都是mapper
、service
、controller
层,套路一模一样。一共设置了实时和离线两个yarn
资源队列,由于其它部门人使用可能存在队列压力过大的情况,需要对数据量按照每次查询的数据范围不超过60
天来限制,和此时集群使用资源不能大于55%,这里重点说明一下controller
层对数据量的预防。
实体类UserModel
:
2.1 集群资源使用率不大于55%
因为很多业务查询逻辑controller
都要用到数据量防御过大的问题,这里使用了被Spring
切面关联的注解来标识controller
。
定义切面YarnResourceAspect
,并且关联注解@YarnResource
获取yarn
的资源使用数据:
在controller
上通过注解@YarnResource
标识:
2.2 查询数据跨度不超过60
天检查
这样每次请求进入controller
的时候就会自动检查查询的日期是否超过60
天了,防止载入数据过多,引发其它任务资源不够。
这里访问hive
肯定需要切换数据源的,因为其它页面还有对mysql
的数据访问,需要注意一下。
目前功能看起来很简单,没有用到什么高大上的东西,后面慢慢完善。
作者:柯广的网络日志
微信公众号:Java大数据与数据仓库