kylin沿用了原來的資料倉儲技術中的cube概念,把無限資料按有限的維度進行「預處理」,然後將結果(cube)載入到hbase裡,供使用者查詢使用。
kylin是通過空間換時間的方式,實現在亞秒級別延遲的情況下,對hadoop上的大規模資料集進行互動式查詢,kylin通過預計算,把計算結果集儲存到hbase中,原有的基於行的關係模型被轉化為基於鍵值對的列式儲存,通過維度組合作為hbase的rowkey,在查詢訪問時不再需要昂貴的表掃瞄,這為高速高併發分析帶來了可能;kylin提供了標準sql查詢介面,支撐大多數的sql函式,同時也支援odbc/jdbc的方式和主流的bi產品無縫整合。
kylin的工作原理
1、指定資料模型,定義維度和度量
2、預計算cube,計算所有cuboid並儲存為物化檢視
3、執行查詢時,讀取cuboid,運算,產生查詢結果。
kylin的的主要特點
1、標準sql介面
2、支援超大資料集
3、亞秒級響應
4、可伸縮性和高吞吐率
5、bi及視覺化工具整合
幾個核心概念
資料倉儲:(data warehouse):大量歷史性資料資料。
olap:聯機分析處理,以多維度的方式分析資料,而且能夠彈性的提供上捲、下鑽和透視分析等操作。區別於聯機交易處理(oltp):更側重於日常事務處理,增刪改查。
bi:商業智慧型
維度與度量:維度是指審視資料的角度,通常是資料記錄的乙個屬性,eg:時間、地點等,度量是基於資料所計算出來的考量值。eg:銷售額,使用者數等
事實表和維度表:事實表儲存有事實記錄的表,eg:系統日誌、銷售記錄等,事實表不斷動態增長。維度表儲存了維度的屬性值,eg:日期表、地點表等
cube、cuboid和cube segment
cube:資料立方體,常用於資料分析和索引的技術,他可以對原始資料建立多維度索引,通過cube對資料進行資料進行分析,大大加快資料的查詢效率。
cuboid:在kylin中特製某一中維度組合下所計算的資料
cube segment:是指針對源資料中的某一片段,計算出來的cube資料。通常資料倉儲中的資料會隨著時間的增長而增長,而cube segment也是按時間順序來構建的。
apache kylin的主要使用過程:
1、資料準備:符合星型模型、維度表設計(kylin將維度表載入到記憶體中處理,所有維度表不能太大)、hive表分割槽 。
2、設計cube:匯入hive表定義、建立資料模型
3、建立cube:kylin是以key-value的方式將cube儲存到hbase中,hbase的key也就是rowkey是由各個維度的值拼接而成的。
4、構建cube:增量構建和全量構建
5、歷史資料重新整理、合併(segment)
6、查詢cube,標準的sql的select語句。
支援構建方式:
增量構建:分全量和增量
流式構建:實現實時資料更新,對接kafka實現,目前存在丟失資料的風險
支援對接方式:
1、web gui --- insight頁面
2、rest api
3、odbc/jdbc
4、通過tableau(bi)訪問kylin。
超快輸入掛(模板)
昨天的hdu的多校最後乙個是個無聊的卡輸入掛的問題,但是不得不說大佬的自己搓的輸入掛就是比較6,比我們的快讀都要快,確實需要記錄一下 大佬分享的 輸入掛模板 標程帶的輸入掛 includeusing namespace std namespace fastio return p1 inline bo...
可擴充套件標記語言
可擴充套件標記語言與access,oracle和sql server等資料庫不同,資料庫提供了更強有力的資料儲存和分析能力,例如 資料索引 排序 查詢 相關一致性等,可擴充套件標記語言僅僅是儲存資料。事實上它與其他資料表現形式最大的不同是 可擴充套件標記語言極其簡單,這是乙個看上去有點瑣細的優點,但...
可擴充套件標記語言
xml是可擴充套件標記語言,類似html,用來傳輸和儲存資料。標準通用標記語言的子集,是一種用於標記電子檔案使其具有結構性的標記語言。在電子計算機中,標記指計算機所能理解的資訊符號,通過此種標記,計算機之間可以處理包含各種的資訊比如文章等。xml是樹形結構,且一定要有跟部標籤。語法規則 a.所有的 ...