kylin cube 增量和全量

全量構建與增量構建

全量構建

對數據模型中沒有指定分割時間列信息的Cube,Kylin會採用全量構建,即每次從Hive中讀取全部的數據來開始構建。通常它適用於以下兩種情形。
事實表的數據不是按時間增長的。
事實表的數據比較小或更新頻率很低,全量構建不會造成太大的開銷。

 

增量構建

Kylin每次都會從Hive中讀取一個時間範圍內的數據,然後進行計算,並以一個Segment的形式進行保存。下次再構建的時候,會自動以上次結束的時間爲起點時間,再選擇新的終止時間進行構建。經過多次構建,Cube中將會有多個Segment依次按時間順序進行排列,如Seg-1,Seg-2,…,Seg-N。查詢的時候,Kylin會查詢一個或多個Segment然後再做聚合計算,以便返回正確的結果給請求者。
使用增量構建的好處是,每次只需要對新增數據進行計算,從而避免了對歷史數據進行重複計算。對於數據量很大的Cube,使用增量構建是非常有必要

 

增量構建引發的問題

歷史數據刷新

Cube構建完成以後,如果某些歷史數據發生了改動,那麼需要針對相應的Segment進行重新計算,這種構建稱爲刷新。刷新通常只針對增量構建的Cube而言,因爲全量構建的Cube只要重新全部構建就可以得到更新;而增量更新的Cube因爲有多個Segment,因此需要先選擇要刷新的Segment,然後再進行刷新。

在刷新的同時,Cube仍然可以被查詢,只不過返回的是陳舊數據。當Segment刷新完畢時,新的Segment會立即生效,查詢開始返回最新的數據。老Segment則成爲垃圾,等待回收。

Cube合併

隨着時間的遷移,Cube中可能會存在較多數量的Segment,使得查詢性能下降,並且會給HBase集羣管理帶來壓力。對此,需要適時地將一些Segment進行合併,將若干個小Segment合併成較大的Segment。

合併的好處具體如下:

1)合併相同的Key,從而減少Cube的存儲空間。

2)由於Segment減少了,因此可以減少查詢時的二次聚合,提高了查詢性能。

3)HTable的數量得以減少,更便於集羣的管理。

 

轉載於:https://my.oschina.net/u/2000675/blog/2999947

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章