Kylin增量cube build的restAPI的時間不準確的BUG

Kylin1.6增量cube build的restAPI的時間不準確的bug:
描述:使用restAPI:curl -X PUT -u "ADMIN:KYLIN" -H "Content-Type:application/json;charset=utf-8" -d '{"startTime":1508601600000,"endTime":1508688000000,"buildType":"BUILD"}'http://172.17.60.45:7070/kylin/api/cubes/bi_dispatch_waiting_service_cube/rebuild
增量構建時間設置【2017-10-22~2017-10-23】,但是實際時間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個小時的問題。
解決方案
1. 調用rest API時手動進行時區轉換
2.對kylin代碼進行修改動態獲取配置的timezone,但是修改code這個範圍很大,前端UI和server端code都需要修改時間
KYLIN代碼分析:
1. cube segment 的命名硬編碼爲使用時區GMT

2.前端UI會獲取時區配置進行轉換:

3.cube構建時間的傳遞的時間戳startTime和endtime都是使用DateFormat按照GMT時區轉化對應的時間格式:

我在查看KYLIN文檔時,沒有看到對該問題的描述,在考慮KYLIN這種設計是想在server屏蔽timezone複雜度,使用同一的gmt時區處理時間,採用前端UI來處理傳參的時間問題,但是忽略restAPI用戶不會出裏這種問題,應該在文檔提前說明該問題,否則困擾使用restAPI的用戶,以上皆爲本人使用過程中遇到問題,如果錯誤請多謝支持,及時改正。


轉自 https://blog.csdn.net/xiaolinzi007/article/details/78293061

發佈了31 篇原創文章 · 獲贊 8 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章