Kylin定時增量build

1、從 Kafka 流構(gòu)建的 Cube

cubeName=xxxxxxxx
  
curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' -d '{ "sourceOffsetStart": 0, "sourceOffsetEnd": 9223372036854775807, "buildType": "BUILD"}' http://127.0.0.1:7070/kylin/api/cubes/$cubeName/build2

2、從hive構(gòu)建的Cube

#!/bin/bash  
  
###################################################################################################################  
## 腳本功能:之前腳本任務(wù)完成后,使用Kylin命令,增量更新Kylin cube  
## 修改歷史:  
#     
  
#加入Kylin增量build cube  
##cubeName  cube的名稱  
##endTime  執(zhí)行build cube的結(jié)束時間 (命令傳給Kylin的kylinEndTime = realEndTime + (8小時,轉(zhuǎn)化為毫秒)。只需要給Kylin傳入build cube的結(jié)束時間即可。)  
##buildType  BUILD 構(gòu)建cube操作(還有Refresh、Merge等操作,增量構(gòu)建為BUILD)  
#但是實際時間cube的構(gòu)建抽取數(shù)據(jù)時間確比設(shè)置時間提前1天(實際上是提前8小時)【2017-10-21~2017-10-22】,但是使用kylinUI構(gòu)建卻沒有問題,實際查看kylin源碼發(fā)現(xiàn),是由于kylin在server端源碼使用的timezone固定為GMT而非配置的GMT+8,而前端UI會根據(jù)配置的timezone對頁面添加的時間進(jìn)行轉(zhuǎn)換變GMT+8的時間,然后后端將GMT+8時間在轉(zhuǎn)化為GMT的時間,所以kylinUI的cube構(gòu)建時間不會出現(xiàn)錯誤,而使用restAPI構(gòu)建cube時間不進(jìn)行timezone轉(zhuǎn)化就是出現(xiàn)時間不準(zhǔn)確差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轉(zhuǎn)換為時間戳,精確到毫秒  

today=`date +%s`  
#todayTimeStamp=`date -d "$today 00:00:00" +%s`  
#todayTimeStampMs=$(($today*1000 + `date "+%N"`/1000000)) #將current轉(zhuǎn)換為時間戳,精確到毫秒  

onedayTime=$((24 * 60 * 60 * 1000)) #24小時的毫秒數(shù)
tomorrowTimeStampMs=$(($today*1000 + $onedayTime)) #當(dāng)前時間偏移24小時

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

cubeName=xxxxxxxx

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

3、hive 全量構(gòu)建

#!/bin/bash  
  
###################################################################################################################  
## 腳本功能:datax 同步昨天的數(shù)據(jù)到hive中后,使用腳本先disable當(dāng)前的cube,再清空,再重建,因為這個hive中的數(shù)據(jù)每次都是以前的分區(qū)和增量數(shù)據(jù)構(gòu)成一個新的分區(qū),不能拿出來增量數(shù)據(jù)
## 修改歷史:  
#     
  
#加入Kylin增量build cube  
##cubeName  cube的名稱  
##endTime  執(zhí)行build cube的結(jié)束時間 (命令傳給Kylin的kylinEndTime = realEndTime + (8小時,轉(zhuǎn)化為毫秒)。只需要給Kylin傳入build cube的結(jié)束時間即可。)  
##buildType  BUILD 構(gòu)建cube操作(還有Refresh、Merge等操作,增量構(gòu)建為BUILD)  
#但是實際時間cube的構(gòu)建抽取數(shù)據(jù)時間確比設(shè)置時間提前1天(實際上是提前8小時)【2017-10-21~2017-10-22】,但是使用kylinUI構(gòu)建卻沒有問題,實際查看kylin源碼發(fā)現(xiàn),是由于kylin在server端源碼使用的timezone固定為GMT而非配置的GMT+8,而前端UI會根據(jù)配置的timezone對頁面添加的時間進(jìn)行轉(zhuǎn)換變GMT+8的時間,然后后端將GMT+8時間在轉(zhuǎn)化為GMT的時間,所以kylinUI的cube構(gòu)建時間不會出現(xiàn)錯誤,而使用restAPI構(gòu)建cube時間不進(jìn)行timezone轉(zhuǎn)化就是出現(xiàn)時間不準(zhǔn)確差8個小時的問題。
  
kylinMinusTime=$((8 * 60 * 60 * 1000)) #kyin提前8小時,所以需要偏移8小時
onedayTime=$((24 * 60 * 60 * 1000)) #24小時的毫秒數(shù)
#yesterday=`date -d yesterday +%Y-%m-%d` 
#prevTimeStamp=`date -d '-5 minute' +%s`  
#prevTimeStampMs=$(($prevTimeStamp*1000 + `date "+%N"`/1000000)) #將current轉(zhuǎn)換為時間戳,精確到毫秒  \

today=`date -d today +%Y-%m-%d` 
todayTimeStamp=`date -d "$today 00:00:00" +%s`  
todayTimeStampMs=$(($todayTimeStamp*1000)) #將current轉(zhuǎn)換為時間戳,精確到毫秒  

tomorrowTimeStampMs=$(($todayTimeStampMs + $onedayTime)) #當(dāng)前時間偏移24小時

startTime=$(($todayTimeStampMs + $kylinMinusTime)) 
endTime=$(($tomorrowTimeStampMs + $kylinMinusTime))  

cubeName=xxxxxx

curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' http://127.0.0.1:7070/kylin/api/cubes/$cubeName/disable
#curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' http://127.0.0.1:7070/kylin/api/cubes/$cubeName/enable
curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' http://127.0.0.1:7070/kylin/api/cubes/$cubeName/purge
curl -X PUT -H "Authorization: Basic QURNSU46S1lMSU4=" -H 'Content-Type: application/json' -d '{"startTime":'$startTime', "endTime":'$endTime', "buildType":"BUILD"}' http://127.0.0.1:7070/kylin/api/cubes/$cubeName/build
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容