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é)束時(shí)間 (命令傳給Kylin的kylinEndTime = realEndTime + (8小時(shí)肴颊,轉(zhuǎn)化為毫秒)。只需要給Kylin傳入build cube的結(jié)束時(shí)間即可供填。)
##buildType BUILD 構(gòu)建cube操作(還有Refresh拐云、Merge等操作,增量構(gòu)建為BUILD)
#但是實(shí)際時(shí)間cube的構(gòu)建抽取數(shù)據(jù)時(shí)間確比設(shè)置時(shí)間提前1天(實(shí)際上是提前8小時(shí))【2017-10-21~2017-10-22】近她,但是使用kylinUI構(gòu)建卻沒有問題叉瘩,實(shí)際查看kylin源碼發(fā)現(xiàn),是由于kylin在server端源碼使用的timezone固定為GMT而非配置的GMT+8粘捎,而前端UI會根據(jù)配置的timezone對頁面添加的時(shí)間進(jìn)行轉(zhuǎn)換變GMT+8的時(shí)間薇缅,然后后端將GMT+8時(shí)間在轉(zhuǎn)化為GMT的時(shí)間,所以kylinUI的cube構(gòu)建時(shí)間不會出現(xiàn)錯(cuò)誤攒磨,而使用restAPI構(gòu)建cube時(shí)間不進(jìn)行timezone轉(zhuǎn)化就是出現(xiàn)時(shí)間不準(zhǔn)確差8個(gè)小時(shí)的問題泳桦。
##只需要指定endtime,startTime 即上次的endTime,在cube的SEGMENT中有記錄
kylinMinusTime=$((8 * 60 * 60 * 1000)) #kyin提前8小時(shí)娩缰,所以需要偏移8小時(shí)
#yesterday=`date -d yesterday +%Y-%m-%d`
#prevTimeStamp=`date -d '-5 minute' +%s`
#prevTimeStampMs=$(($prevTimeStamp*1000 + `date "+%N"`/1000000)) #將current轉(zhuǎn)換為時(shí)間戳灸撰,精確到毫秒
today=`date +%s`
#todayTimeStamp=`date -d "$today 00:00:00" +%s`
#todayTimeStampMs=$(($today*1000 + `date "+%N"`/1000000)) #將current轉(zhuǎn)換為時(shí)間戳,精確到毫秒
onedayTime=$((24 * 60 * 60 * 1000)) #24小時(shí)的毫秒數(shù)
tomorrowTimeStampMs=$(($today*1000 + $onedayTime)) #當(dāng)前時(shí)間偏移24小時(shí)
#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完疫,再清空,再重建亲轨,因?yàn)檫@個(gè)hive中的數(shù)據(jù)每次都是以前的分區(qū)和增量數(shù)據(jù)構(gòu)成一個(gè)新的分區(qū)趋惨,不能拿出來增量數(shù)據(jù)
## 修改歷史:
#
#加入Kylin增量build cube
##cubeName cube的名稱
##endTime 執(zhí)行build cube的結(jié)束時(shí)間 (命令傳給Kylin的kylinEndTime = realEndTime + (8小時(shí),轉(zhuǎn)化為毫秒)惦蚊。只需要給Kylin傳入build cube的結(jié)束時(shí)間即可器虾。)
##buildType BUILD 構(gòu)建cube操作(還有Refresh、Merge等操作蹦锋,增量構(gòu)建為BUILD)
#但是實(shí)際時(shí)間cube的構(gòu)建抽取數(shù)據(jù)時(shí)間確比設(shè)置時(shí)間提前1天(實(shí)際上是提前8小時(shí))【2017-10-21~2017-10-22】兆沙,但是使用kylinUI構(gòu)建卻沒有問題,實(shí)際查看kylin源碼發(fā)現(xiàn)莉掂,是由于kylin在server端源碼使用的timezone固定為GMT而非配置的GMT+8葛圃,而前端UI會根據(jù)配置的timezone對頁面添加的時(shí)間進(jìn)行轉(zhuǎn)換變GMT+8的時(shí)間,然后后端將GMT+8時(shí)間在轉(zhuǎn)化為GMT的時(shí)間憎妙,所以kylinUI的cube構(gòu)建時(shí)間不會出現(xiàn)錯(cuò)誤库正,而使用restAPI構(gòu)建cube時(shí)間不進(jìn)行timezone轉(zhuǎn)化就是出現(xiàn)時(shí)間不準(zhǔn)確差8個(gè)小時(shí)的問題。
kylinMinusTime=$((8 * 60 * 60 * 1000)) #kyin提前8小時(shí)厘唾,所以需要偏移8小時(shí)
onedayTime=$((24 * 60 * 60 * 1000)) #24小時(shí)的毫秒數(shù)
#yesterday=`date -d yesterday +%Y-%m-%d`
#prevTimeStamp=`date -d '-5 minute' +%s`
#prevTimeStampMs=$(($prevTimeStamp*1000 + `date "+%N"`/1000000)) #將current轉(zhuǎn)換為時(shí)間戳褥符,精確到毫秒 \
today=`date -d today +%Y-%m-%d`
todayTimeStamp=`date -d "$today 00:00:00" +%s`
todayTimeStampMs=$(($todayTimeStamp*1000)) #將current轉(zhuǎn)換為時(shí)間戳,精確到毫秒
tomorrowTimeStampMs=$(($todayTimeStampMs + $onedayTime)) #當(dāng)前時(shí)間偏移24小時(shí)
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