Kylin定时构建cube,hdfs中数据定时加载至hive分区

kylin增量构建cube:

#!/bin/bash  
  
###################################################################################################################  
## 脚本功能:之前脚本任务完成后,使用Kylin命令,增量更新Kylin cube  
## 修改历史:  
#     
  
#加入Kylin增量build cube  
##cubeName  cube的名称  
##endTime  执行build cube的结束时间 (命令传给Kylin的kylinEndTime = realEndTime + ##(8小时,转化为毫秒)。只需要给Kylin传入build cube的结束时间即可。)  
##buildType  BUILD 构建cube操作(还有Refresh、Merge等操作,增量构建为BUILD)  
##但是实际时间cube的构建抽取数据时间确比设置时间提前1天(实际上是提前8小时)【2017-10-21~2017-10-22】,##但是使用kylinUI构建却没有问题,实际查看kylin源码发现,是由于kylin在server端源码使用的timezone固定为GMT而非配置的GMT+8,而前端UI会根据配置的timezone对页面添加的时间进行转换变GMT+8的时间,然后后端将GMT+8时间在转化为GMT的时间,所以kylinUI的cube构建时间不会出现错误,而使用restAPI构建cube时间不进行timezone转化就是出现时间不准确差8个小时的问题。
##只需要指定endtime,startTime 即上次的endTime,在cube的SEGMENT中有记录

kylinMinusTime=$((8 * 60 * 60 * 1000)) #kyin提前8小时,所以需要偏移8小时
#yesterday=`date -d yesterday +%Y-%m-%d` 
#prevTimeStamp=`date -d '-5 minute' +%s`  
#prevTimeStampMs=$(($prevTimeStamp*1000 + `date "+%N"`/1000000)) #将current转换为时间戳,精确到毫秒  

today=`date +%s`  
#todayTimeStamp=`date -d "$today 00:00:00" +%s`  
#todayTimeStampMs=$(($today*1000 + `date "+%N"`/1000000)) #将current转换为时间戳,精确到毫秒  

onedayTime=$((24 * 60 * 60 * 1000)) #24小时的毫秒数
tomorrowTimeStampMs=$(($today*1000 + $onedayTime)) #当前时间偏移24小时

#startTime=$(($prevTimeStampMs + $kylinMinusTime)) 
endTime=$(($tomorrowTimeStampMs + $kylinMinusTime)) 

 
cubeName1=aaudit_online_cube1
cubeName2=aaudit_online_cube2
cubeName3=online_model_cabnitcube 
cubeName4=browse_model1_cube1

curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' -d '{"endTime":'$endTime', "buildType":"BUILD"}' http://172.16.0.17:7070//kylin/api/cubes/$cubeName4/rebuild

curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' -d '{"endTime":'$endTime', "buildType":"BUILD"}' http://172.16.0.17:7070//kylin/api/cubes/$cubeName1/rebuild


curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' -d '{"endTime":'$endTime', "buildType":"BUILD"}' http://172.16.0.17:7070//kylin/api/cubes/$cubeName2/rebuild

curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' -d '{"endTime":'$endTime', "buildType":"BUILD"}' http://172.16.0.17:7070//kylin/api/cubes/$cubeName3/rebuild

hdfs数据加载到hive分区:

#!/bin/bash
todaydate=`date -d -1days +%Y-%m-%d`
tablename='sse_aaudit_online'
hive -e "ALTER TABLE $tablename ADD PARTITION(dt='$todaydate') LOCATION '/data/test003/$todaydate/'";

然后crontab定时一下,在linux中执行一下命令:

crontab -e

##将这两行加进去
10 12 * * * /opt/sse_shell/hdfs_to_hivePartition.sh
10 12 * * * /opt/sse_shell/cube.sh

忘记了,得重启下crontab服务:
(Centos7)

systemctl  restart crond.service

over

你可能感兴趣的:(Kylin)