原來 Kylin 的增量構建,大有學問! | 原力計劃
摘要:增量構建 Cube 的定義必須包含一個時間維度,用來分割不同的 Segment,這樣的維度稱爲分割時間列(Partition Date Column)。增量構建的 Cube 需要指定分割時間列。
查詢引擎只需向存儲引擎訪問單個 Segment 所對應的數據,無需進行 Segment 之間的聚合;
爲了加強性能,單個 Segment 的數據也有可能被分片存儲到引擎的多個分區上,查詢引擎可能仍然需要對單個 Segment 不同分區的數據做進一步的聚合。
由於不同時間的數據分佈在不同的 Segment 之中,查詢引擎需要向存儲引擎請求讀取各個 Segment 的數據;
增量構建的 Cube 上的查詢會比全量構建的做更多的運行時聚合,通常來說增量構建的 Cube 上的查詢會比全量構建的 Cube 上的查詢要慢一些。
在進行增量構建時,將增量部分的起始時間和結束時間作爲增量構建請求的一部分提交給 Kylin 的任務引擎
任務引擎會根據起始時間和結束時間從 Hive 中抽取相應時間的數據,並對這部分數據做預計算處理
將預計算的結果封裝成爲一個新的 Segment ,並將相應的信息保存到元數據和存儲引擎中。一般來說,增量部分的起始時間等於 Cube 中最後一個 Segment 的結束時間。
1個文件10G和10000個文件共10G 讀取一個文件更快(尋址開銷、頻繁發開關閉)
一個文件夾內的文件特別多,這個文件夾打開的時間就會特別長。
當系統越來越慢,越來越慢,越來越慢,越來越慢,有可能是某一個目錄中的數據沒有及時的清空或刪除。