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