SpringBoot連接Hive實(shí)現(xiàn)自助取數(shù)
Hive系列文章
- Hive表的基本操作
- Hive中的集合數(shù)據(jù)類型
- Hive動(dòng)態(tài)分區(qū)詳解
- hive中orc格式表的數(shù)據(jù)導(dǎo)入
- Java通過(guò)jdbc連接hive
- 通過(guò)HiveServer2訪問Hive
- SpringBoot連接Hive實(shí)現(xiàn)自助取數(shù)
- hive關(guān)聯(lián)hbase表
- Hive udf 使用方法
- Hive基于UDF進(jìn)行文本分詞
- Hive窗口函數(shù)row number的用法
- 數(shù)據(jù)倉(cāng)庫(kù)之拉鏈表
公司運(yùn)營(yíng)免不了讓我們數(shù)據(jù)做一些臨時(shí)取數(shù),這些取數(shù)有時(shí)候是重復(fù)的,或者可以做成可配置的。需要開發(fā)成界面,供他們選擇,自然想到SpringBoot
連接Hive
,可以把取數(shù)做成一鍵生成,或者讓他們自己寫sql
,通常大多人是不會(huì)sql
的。
1. 需要的依賴配置
為了節(jié)省篇幅,這里給出hiveserver2
方式連接hive
主要的maven
依賴,父工程springboot
依賴省略。
application-test.yml
配置數(shù)據(jù)庫(kù)連接,這里用的是druid
連接池管理hiveserver2
連接,也是沒有問題的。
# Spring配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 多數(shù)據(jù)源**省略若干***
# hive數(shù)據(jù)源
slave3:
# 從數(shù)據(jù)源開關(guān)/默認(rèn)關(guān)閉
enabled: true
driverClassName: org.apache.hive.jdbc.HiveDriver
url: jdbc:hive2://cdh:10000/default
username: bigdata
password: bigdata
2. 代碼實(shí)現(xiàn)
代碼實(shí)現(xiàn)跟其它程序一樣,都是mapper
、service
、controller
層,套路一模一樣。一共設(shè)置了實(shí)時(shí)和離線兩個(gè)yarn
資源隊(duì)列,由于其它部門人使用可能存在隊(duì)列壓力過(guò)大的情況,需要對(duì)數(shù)據(jù)量按照每次查詢的數(shù)據(jù)范圍不超過(guò)60
天來(lái)限制,和此時(shí)集群使用資源不能大于55%,這里重點(diǎn)說(shuō)明一下controller
層對(duì)數(shù)據(jù)量的預(yù)防。
實(shí)體類UserModel
:
2.1 集群資源使用率不大于55%
因?yàn)楹芏鄻I(yè)務(wù)查詢邏輯controller
都要用到數(shù)據(jù)量防御過(guò)大的問題,這里使用了被Spring
切面關(guān)聯(lián)的注解來(lái)標(biāo)識(shí)controller
。
定義切面YarnResourceAspect
,并且關(guān)聯(lián)注解@YarnResource
獲取yarn
的資源使用數(shù)據(jù):
在controller
上通過(guò)注解@YarnResource
標(biāo)識(shí):
2.2 查詢數(shù)據(jù)跨度不超過(guò)60
天檢查
這樣每次請(qǐng)求進(jìn)入controller
的時(shí)候就會(huì)自動(dòng)檢查查詢的日期是否超過(guò)60
天了,防止載入數(shù)據(jù)過(guò)多,引發(fā)其它任務(wù)資源不夠。
這里訪問hive
肯定需要切換數(shù)據(jù)源的,因?yàn)槠渌?yè)面還有對(duì)mysql
的數(shù)據(jù)訪問,需要注意一下。
目前功能看起來(lái)很簡(jiǎn)單,沒有用到什么高大上的東西,后面慢慢完善。
作者:柯廣的網(wǎng)絡(luò)日志
微信公眾號(hào):Java大數(shù)據(jù)與數(shù)據(jù)倉(cāng)庫(kù)