Apache Kylin 綜述

caotans 9年前發布 | 26K 次閱讀 Apache Kylin

1. 簡介

1.1 Kylin概覽

Apache Kylin是一個開源的 分布式分析引擎 ,提供Hadoop之上的SQL查詢接口及多維分析(OLAP)能力(可以把Kylin定義為 OLAP on Hadoop )。Apache Kylin于2015年11月正式畢業成為Apache基金會(ASF) 頂級項目,是 第一個由中國團隊完整貢獻到Apache的頂級項目

Apache Kyiln構建在Hadoop等分布式計算平臺之上,充分利用了 MapReduce 的并行處理能力和可擴展基礎設施,高效地處理超大規模數據,可根據數據的規模實現架構的可伸縮。Apache Kylin作為OLAP引擎包含了從 數據源(Hive/Kafka等) 獲取源數據,基于MapReduce 構建多維立方體(Cube) ,并充分利用 HBase 的列式特性來分布式的 存儲立方體數據 ,提供標準SQL解析與查詢優化,以及ODBC/JDBC驅動及REST API等多個模塊。 可插拔 的靈活架構,允許支持更多的數據源接入Kylin,也支持采用其它技術作為存儲引擎。

大多數的Hadoop分析工具和SQL是友好的,所以Apache Kylin擁有SQL接口這一點就顯得尤為重要。Kylin用的SQL解析器是開源的Apache Calcite,支持幾乎所有的SQL標準。Hive用的也是Calcite。

Kylin和其它SQL ON Hadoop的主要區別是 預計算(離線計算) 。用戶在使用之前先選擇一個Hive Table的集合,然后在這個基礎上做一個離線的Cube構建,Cube構建完了之后就可以做SQL查詢了。

用離線計算來代替在線計算,在離線過程當中把復雜的、計算量很大的工作做完,在線計算量就會變小,就可以更快的返回查詢結果。通過這種方式,Kylin可以有更少的計算量,更高的吞吐量。

Apache Kylin開源一年左右的時間,已經在國內國際多個公司被采用作為大數據分析平臺的關鍵組成部分,包括eBay、Expedia、Exponential、百度、京東、美團、明略數據、網易、中國移動、唯品會、58同城等。

1.2 Kylin架構

Apache Kylin包含以下核心組件:

元數據引擎:包含模型設計,Cube設計,表結構同步,數據采樣分析等。支持層級維度、聯合維度、可推導維度等維度降維優化技術,避免Cube數據膨脹。支持多種字典編碼算法,實現數據高效壓縮存儲。

Job引擎:用于向Hadoop平臺提交Cube構建任務,支持全表構建、增量構建、流式構建等多種構建機制,支持Cube自動合并等IO優化手段,內置多種Cube預計算算法以及數十個Job性能調優參數,充分發揮MapReduce的計算能力。

存儲引擎:將關系型表的源數據,經過預計算,保存在支持高通量大并發快速讀寫的鍵值數據庫HBase中,充分利用HBase高效的Fuzzy Key過濾技術和Coprocessor并行處理技術,以并行計算方式檢索數據,支持查詢邏輯下壓存儲節點,實現了數據檢索問題由O(N)的計算復雜度降低為O(1)。

查詢引擎:構建在Apache Calcite語法解析器之上,支持JDBC/ODBC/REST等多種協議和接口,支持ANSI SQL,包含絕大多數SQL函數,提供自定義計算函數機制,與Tableau等主流BI工具完美對接。

Web管理端:內置用戶友好的交互界面,支持向導式的模型構建,直觀的任務監控與告警,以及用戶權限管理。

1.3 Kylin特點

  • 可擴展超快OLAP引擎: Kylin是為減少在Hadoop上百億規模數據查詢延遲而設計

  • Hadoop ANSI SQL 接口: Kylin為Hadoop提供標準SQL支持大部分查詢功能

  • 交互式查詢能力: 通過Kylin,用戶可以與Hadoop數據進行亞秒級交互,在同樣的數據集上提供比Hive更好的性能

  • 多維立方體(MOLAP Cube):用戶能夠在Kylin里為百億以上數據集定義數據模型并構建立方體

  • 與BI工具無縫整合:Kylin提供與BI工具,如Tableau,的整合能力,即將提供對其他工具的整合

  • 其他特性:

    • Job管理與監控

    • 壓縮與編碼

    • 增量更新

    • 利用HBase Coprocessor

    • 基于HyperLogLog的Dinstinc Count近似算法 - 友好的web界面以管理,監控和使用立方體

    • 項目及立方體級別的訪問控制安全

    • 支持LDAP

1.4 Kylin生態圈

Kylin 核心:Kylin OLAP引擎基礎框架,包括元數據(Metadata)引擎,查詢引擎,Job引擎及存儲引擎等,同時包括REST服務器以響應客戶端請求

擴展:支持額外功能和特性的插件

整合:與調度系統,ETL,監控等生命周期管理系統的整合

用戶界面:在Kylin核心之上擴展的第三方用戶界面

驅動:ODBC 和 JDBC 驅動以支持不同的工具和產品,比如Tableau

1.5 Kylin在各大公司的實踐

  • Apache Kylin在美團數十億數據OLAP場景下的實踐

  • Apache Kylin在百度地圖的實踐

  • Apache Kylin在京東云海的實踐

  • Apache Kylin 在電信運營商的實踐和案例分享

  • Apache Kylin在國美在線的應用

  • Apache Kylin在魅族的實踐

1.6 Kylin基礎概念

  • 星型模型

  • Cube

  • 在HBase中存儲

1.6.1 CUBE

  • Table- 表, 是Cube的數據源;在創建Cube之前,KAP需要從數據源(通常為Hive)同步表的元數據,包含表名、列名、列屬性等。

  • Data Model- 數據模型,定義了由若干張表的一個連接關系。Kylin支持星型模型的多維分析;在創建Cube之前,用戶需定義這么一個數據模型(目前Kylin 只支持星型模型 ,未來會支持雪花模型)。

  • Cube- 數據立方體,是一種多維分析的技術,通過預計算,將計算結果存儲在某多個維度值所映射的空間中;在運行時通過對Cube的再處理而快速獲取結果。

  • Partition- 分區,用戶可以定義一個分區日期或時間列,隨后對Cube的構建按此列的值范圍而進行,從而將Cube分成多個Segment。

  • Cube Segment- 每個Cube Segment是對特定時間范圍的數據計算而成的Cube。每個Segment對應一張HBase表。

  • Aggregation Group- 聚合組,每個聚合組是全部維度的一個子集;通過將很多個維度分組,并把常一起使用的維度放在一起,可以有效降低Cube的組合數。

1.6.2 維度 & 度量

  • Mandotary- 必需的維度:這種類型用于對Cube生成樹做剪枝:如果一個維度被標記為“Mandatory”,會認為所有的查詢都會包含此維度,故所有不含此維度的組合,在Cube構建時都會被剪枝(不計算).

  • Hierarchy- 層級維度:如果多個維度之間有層級(或包含)的關系,通過設置為“Hierarchy”,那些不滿足層級的組合會被剪枝。如果A, B, C是層級,并且A>B>C,那么只需要計算組合A, AB, ABC; 其它組合如B, C, BC, AC將不做預計算。

  • Derived- 衍生維度:維度表的列值,可以從它的主鍵值衍生而來,那么通過將這些列定義為衍生維度,可以僅將主鍵加入到Cube的預計算來,而在運行時通過使用維度表的快照,衍生出非PK列的值,從而起到降維的效果。

  • Count Distinct(HyperLogLog)- 基于HyperLogLog的Count Distint:快速、精確的COUNT DISTINCT是較難計算的, 一個近似的輕量級算法 - HyperLogLog 為此而發明, 能夠在大規模數據集上做去重并保持較低的誤差率.

  • Count Distinct(Bitmap)- 基于Bitmap的COUNT DISTINCT,可以精確去重,但是存儲開銷較大。目前只支持int的數據類型.

  • Top N- 預計算最top的某些記錄的度量,如交易量最大的1000個賣家。

1.6.3 CUBE 操作

  • BUILD- 構建:給定一個時間范圍,將源數據通過運算而生成一個新的Cube Segment。

  • REFRESH- 刷新:對某個已經構建過的Cube Segment,重新從數據源抽取數據并構建,從而獲得更新。

  • MERGE- 合并:將多個Cube Segment合并為一個Segment。這個操作可以減少Segment的數量,同時減少Cube的存儲空間。

  • PURGE- 清空:將Cube的所有Cube Segment刪除。 

1.6.4 JOB狀態

  • NEW- 新任務,剛剛創建。

  • PENDING- 等待被調度執行的任務.

  • RUNNING- 正在運行的任務。

  • FINISHED- 正常完成的任務(終態)。

  • ERROR- 執行出錯的任務。

  • DISCARDED- 丟棄的任務(終態)。

1.6.5 JOB 操作

  • RESUME- 恢復:處于ERROR狀態的任務,用戶在排查或解決問題后,通過此操作來重試執行。

  • DISCARD- 丟棄:放棄此任務,立即停止執行且不會再恢復。

2. 使用

2.1 樣例數據集

二進制包中包含了一份用于測試的樣例數據集,總共大小僅1MB左右,共計3張表,其中事實表有10000條數據。

Kylin僅支持星型數據模型,這里用到的樣例數據集就是一個規范的星型模型結構,它總共包含了3個數據表:

KYLIN_SALES該表是事實表,保存了銷售訂單的明細信息。每一列保存了賣家、商品分類、訂單金額、商品數量等信息,每一行對應著一筆交易訂單。

KYLIN CATEGORY GROUPINGS 該表是維表,保存了商品分類的詳細介紹,例如商品分類名稱等。

KYLIN CAL DT 該表是維表,保存了時間的擴展信息。如單個日期所在的年始、月始、周始、年份、月份等。這三張表一起構成了整個星型模型的結構,下圖是實例-關系圖(圖中未列出表上的所有列): 

數據表與關系

字段 意義
KYLIN_SALES PART_DT 訂單日期
KYLIN_SALES LEAF CATEG ID 商品分類ID
KYLIN_SALES SELLER_ID 賣家ID
KYLIN_SALES PRICE 訂單金額
KYLIN_SALES ITEM_COUNT 購買商品個數
KYLIN_SALES LSTG FORMAT NAME 訂單交易類型
KYLIN CATEGORY GROUPINGS USER DEFINED FIELD1 用戶定義字段1
KYLIN CATEGORY GROUPINGS USER DEFINED FIELD3 用戶定義字段3
KYLIN CATEGORY GROUPINGS UPD_DATE 更新日期
KYLIN CATEGORY GROUPINGS UPD_USER 更新負責人
KYLIN CATEGORY GROUPINGS META CATEG NAME 一級分類
KYLIN CATEGORY GROUPINGS CATEG LVL2 NAME 二級分類
KYLIN CATEGORY GROUPINGS CATEG LVL3 NAME 三級分類
KYLIN CAL DT CAL_DT 日期
KYLIN CAL DT WEEK BEG DT 周始日期

2.2 數據導入

2.2.1 導入Hive數據源

目前,Kylin支持Hive作為默認的輸入數據源。為了使用Kylin中自帶的樣例數據,需要把數據表導入Hive中。在Kylin安裝目錄的bin文件夾中,有一個可執行腳本,可以把樣例數據導入Hive:

$KYLIN_HOME/bin/sample.sh

腳本執行成功之后,進入Hive CLI,確認這些數據已經導入成功,命令如下:

hive
hive> show tables;
OK
kylin_cal_dt
kylin_category_groupings
kylin_sales
Time taken: 0.127 seconds, Fetched: 3 row(s)
hive> select count(*) from kylin_sales;
Query ID = root_20160707221515_b040318d-1f08-44ab-b337-d1f858c46d7d
Total jobs = 1
Launching Job 1 out of 1
Number of reduce tasks determined at compile time: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=<number>
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=<number>
In order to set a constant number of reducers:
  set mapreduce.job.reduces=<number>
Starting Job = job_1467288198207_0129, Tracking URL = http://sandbox.hortonworks.com:8088/proxy/application_1467288198207_0129/
Kill Command = /usr/hdp/2.2.4.2-2/hadoop/bin/hadoop job  -kill job_1467288198207_0129
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
2016-07-07 22:15:11,897 Stage-1 map = 0%,  reduce = 0%
2016-07-07 22:15:17,502 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 1.64 sec
2016-07-07 22:15:25,039 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 3.37 sec
MapReduce Total cumulative CPU time: 3 seconds 370 msec
Ended Job = job_1467288198207_0129
MapReduce Jobs Launched:
Stage-Stage-1: Map: 1  Reduce: 1   Cumulative CPU: 3.37 sec   HDFS Read: 505033 HDFS Write: 6 SUCCESS
Total MapReduce CPU Time Spent: 3 seconds 370 msec
OK
10000
Time taken: 24.966 seconds, Fetched: 1 row(s)

2.2.2 創建項目

打開Kylin的Web UI( :7070/kylin),如下圖所示的操作創建一個新的項目(Project),并命名為KAP Sample 1。

在Web UI的左上角選擇剛剛創建的項目,表示我們接下來的全部操作都在這個項目中,在當前項目的操作不會對其他項目產生影響。

2.2.3 同步Hive表

需要把Hive數據表同步到Kylin當中才能使用。

在彈出的對話框中展開default數據庫,并選擇需要的三張表,如圖所示

導入后系統會自動計算各表各列的維數,以掌握數據的基本情況。稍等幾分鐘后,我們可以通過數據源表的詳情頁查看這些信息。

2.3 創建數據模型(model)

在數據源就緒的基礎之上,我們開始創建數據模型。以Kylin自帶的數據集為例,該數據集的數據模型包含1個事實表和2個維表,表間通過外鍵進行關聯。實際上,并不是表上所有的字段都有被分析的需要,因此我們可以有目的地僅選擇所需字段添加到數據模型中;然后,根據具體的分析場景,把這些字段設置為維度或度量。

打開Kylin的Web UI,在左上角項目列表中選擇剛剛創建的 KAP Sample 1 項目,然后進入“模型”頁面,并創建一個模型。

第一步,在基本信息頁,輸入模型名稱為Sample Model 1,然后單擊下一步。

第二步,為模型選擇事實表( Fact Table )和查找表( Lookup Table )。根據星型模型結構,選擇KYLIN SALES為事實表,然后添加KYLIN CAL DT和KYLIN CATEGORY_GROUPINGS作為查找表,并設置好連接條件:

KYLIN CAL DT 連接類型:Inner 連接條件:

DEFAULT.KYLIN_SALES.PART_DT = DEFAULT.KYLIN_CAL_DT.CAL_DT

KYLIN CATEGORY GROUPINGS 連接類型:Inner 連接條件:

KYLIN_SALES.LEAF_CATEG_ID = KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID
KYLIN_SALES.LSTG_SITE_ID = KYLIN_CATEGORY_GROUPINGS.SITE_ID

下圖是設置好之后的界面:

第三步,從上一步添加的事實表和查找表中選擇需要作為維度的字段。一般的,時間經常用來作為過濾條件,所以我們首先添加時間字段。此外,我們再添加商品分類、賣家ID等字段為維度,具體情況如下圖所示:

第四步,根據業務需要,從事實表上選擇衡量指標的字段作為度量。例如,PRICE字段用來衡量銷售額,ITEM COUNT字段用來衡量商品銷量,SELLER ID用來衡量賣家的銷售能力。最終結果如下圖所示:

第五步,設置根據時間分段。一般來說,銷售數據都是與日俱增的,每天都會有新數據通過ETL到達Hive中,需要選擇增量構建方式構建Cube,所以需要選擇用于分段的時間字段DEFAULT.KYLIN SALES.PART DT。根據樣例數據可以看到,這一列時間的格式是yyyy-MM-dd,所以選擇對應的日期格式。此外,我們既不需要設置單獨的分區時間列,也不需要添加固定的過濾條件。設置效果如下圖所示。 

最終,單擊“保存”按鈕,到此數據模型就創建成功了。

2.4 創建Cube

在創建好數據模型的基礎上,我們還需要根據查詢需求定義度量的預計算類型、維度的組合等,這個過程就是Cube設計的過程。本文將以Kylin自帶的樣例數據為例,介紹Cube的創建過程。

打開Kylin的Web UI,首先選擇KAP Sample 1項目,跳轉到模型頁面,然后按照下圖所示創建一個Cube。

第一步,在“模型名稱”中選擇Sample Model 1,輸入新建Cube的名稱Sample Cube 1,其余字段保持默認,然后單擊“下一步”。

第二步,從數據模型的維度中選擇一些列作為Cube的維度。這里的設置會影響到生成的Cuboid數量,進而影響Cube的數據量大小。 在KYLIN CATEGORY GROUPINGS表里,和商品分類相關的三個字段(META CATEG NAME、CATEG LVL2 NAME、CATEG LVL3 NAME)都可能出現在過濾條件中,我們先把他們添加為普通類型維度。因為從查詢表上添加普通維度不能通過自動生成器(Auto Generator)生成,因此采用手動添加方式,過程如下:

  1. 單擊“添加維度”按鈕,然后選擇“普通維度”。

  2. 針對每一個維度字段,首先在Name輸入框中輸入維度名稱,在Table Name中選擇KYLIN CATEGORY GROUPINGS表,然后在Column Name中選擇相應的列名。

此外,在查詢中還經常把時間作為過濾或聚合的條件,如按周過濾、按周聚合等。這里我們以按周為例,需要用到KYLIN CAL DT中的WEEK BEG DT字段,但是該字段實際上可以由PART DT字段決定,即根據每一個PART DT值可以對應出一個WEEK BEG DT字段,因此,我們添加WEEK BEG DT字段為可推倒維度。 同樣的,KYLIN CATEGORY GROUPINGS表中還有一些可作為可推到維度的字段,如USER DEFINED FIELD1、USER DEFINED FIELD3、UPD DATE、UPD USER等。

在事實表上,表征交易類型的LSTG FORMAT NAME字段也會用于過濾或聚合條件,因此,我們再添加LSTG FORMAT NAME字段作為普通維度。 最終,維度的設置結果如下圖所示:

第三步,根據數據分析中的聚合需求,我們需要為Cube定義度量的聚合形式。默認的,根據數據類型,系統會自動創建好一些COUNT()聚合和SUM()聚合,用于考量交易訂單的數量或者賣出商品的總量。默認建好的聚合仍然可以手動修改或刪除。在這個案例中,我們還需要通過PRICE的不同聚合形式考量銷售額,如總銷售額為SUM(PRICE)、最高訂單金額為MAX(PRICE)、最低訂單金額為MIN(PRICE)。因此,我們手動創建三個度量,分別選擇聚合表達式為SUM、MIN、MAX,并選擇PRICE列作為目標列。

其次,我們還需要通過COUNT(DISTINCT SELLER ID)考量賣家個數。根據前面章節的介紹,Kylin默認使用HyperLogLog算法進行COUNT DISTINCT的計算,該算法是個近似算法,在創建度量時需要選擇一個近似度,本案例對精確性要求不高,為了提升查詢性能,我們選擇精度較低的“Error Rate < 9.75%”。同樣的,我們再創建一個COUNT(DISTINCT LSTG FORMAT NAME)的度量考量不同條件下的交易類型。

在銷售業務分析的場景中,往往需要挑選出銷售業績最好的商家,這時候就需要TOP-N的度量了。在這個例子中,我們會選出SUM(PRICE)最高的一些SELLER_ID,實際上就是執行如下的SQL語句:

SELECT SELLER_ID, SUM(PRICE) FROM KYLIN_SALES GROUP BY SELLER_ID ORDER BY SUM(PRICE)

因此,我們創建一個TOP-N的度量,選擇PRICE字段作為SUM/OPDER BY字段,選擇SELLER_ID字段作為GROUP BY字段,并選擇TOPN(100)作為度量的精度。

最終添加的度量如下圖所示:

第四步,我們對Cube的構建和維護進行配置。一般的,一個銷售統計的SQL查詢往往會按月、周進行過濾和聚合,所以我們可以設置Cube自動按周、月進行自動合并,即每7天進行一次合并,每4周(28天)進行一次合并,設置“觸發自動合并的時間閾值”如下所示:

因為存在對于歷史訂單的查詢需求,我們在此不對Cube做自動清理,所以需要設置“保留時間閾值”為0。

在創建數據模型的時候我們提到,我們希望采用增量構建方式對Cube進行構建,并選擇了PART_DT字段作為分區時間列。在創建Cube時,我們需要指定Cube構建的起始時間,在這個例子中,根據樣例數據中的時間條件,我們選擇2012-01-01 00:00:00作為分區起始時間。

第五步,通過對Cube進行高級設置優化Cube的存儲大小和查詢速度,主要包括聚合組和Rowkey。在前文我們提到,添加聚合組可以利用字段間的層級關系和包含關系有效地降低Cuboid的數量。在這個案例當中,與商品分類相關的三個字段(META CATEG NAME、CATEG LVL2 NAME、CATEG LVL3 NAME)實際上具有層級關系,如一級類別(META CATEG NAME)包含多個二級類別(CATEG LVL2 NAME),二級類別又包含多個三級類別(CATEG LVL3 NAME),所以,我們可以為它們創建層級結構的組合(Hierarchy Dimensions)。最終,聚合組的設計如下圖所示:

由于參與Cuboid生成的維度都會作為Rowkey,因此我們需要把這些列添加為Rowkey當中。在這個案例中,總共需要添加7個Rowkey。在每個Rowkey上,還需要為列值設置編碼方法。在這個案例中,我們除了把LSTG FORMAT NAME設置為fixed length類型(長度為12)外,將其余的Rowkey都設置為dict編碼。 Rowkey的順序對于查詢性能來說至關重要,如第六章所講,一般把最經常出現在過濾條件中的列放置在Rowkey的前面,在這個案例中,我們首先把PART DT放在Rowkey的第一位。接下來,按照層級把商品分類的字段跟隨其后。最終,Rowkey的設置如下圖所示:

對Plus版本:Raw Table是Plus版本的特有功能。如果啟用,Kylin將在構建Cube之外也保存所有的原始記錄,支持高速的明細查詢。Raw Table還處于beta測試階段,僅支持最簡單的啟用或者不啟用。其他的Raw Table配置參數暫時不起作用。

第六步,設置Cube的配置覆蓋。在這里添加的配置項可以在Cube級別覆蓋從kylin.properties配置文件讀取出來的全局配置。在這個案例中,我們可以直接采用默認配置,在此不做任何修改。 第七步,對Cube的信息進行概覽。請讀者仔細確認這些基本信息,包括數據模型名稱、事實表以及維度和度量個數。確認無誤后單擊“保存”按鈕,并在彈出的確認提示框中選擇“Yes”。 最終,Cube的創建就完成了。我們可以刷新Model頁面,在Cube列表中就可以看到新創建的Cube了。因為新創建的Cube沒有被構建過,是不能被查詢的,所以狀態仍然是“禁用”。

2.5 構建Cube

在創建好Cube之后,只有對Cube進行構建,才能利用它執行SQL查詢。本文以Kylin樣例數據為例,介紹Cube構建的過程。

初次構建

首先打開Kylin的Web UI,并選擇Kylin Sample 1項目,然后跳轉到模型頁面,找到Cube列表。 第一步,在Cube列表中找到Kylin Sample Cube_1。單擊右側的Action按鈕,在彈出的菜單中選擇“構建”。

第二步,在彈出的Cube構建確認對話框中確認Cube的分段時間列(Partition Date Column)是DEFAULT.KYLIN SALES.PART DT,以及起始時間是2012-01-01 00:00:00。在KAP中,一次構建會為Cube產生一個新的Segment,每次的SQL查詢都會訪問一個或多個符合條件的Segment;我們需要盡可能地讓一個Segment更好地適用于查詢條件,因此我們可以按年構建,即每個年份構建一個Segment。在這個例子中,我們輸入結束日期(End Date)為2013-01-01 00:00:00。設置完成后單擊Submit按鈕。

注意:增量構建是具體按年構建還是按月構建應該根據實際的業務需求、ETL時效及數據量大小而定。如果一次構建的數據量過大,可能導致構建時間過長,或出現內存溢出等異常。在當前的樣例數據中,數據量較小,按年構建是可以順利完成的。

當任務成功提交之后,切換到Monitor頁面,這里會列出所有的任務列表。我們找到列表最上面的一個任務(名稱是:Kylin Sample Cube 1 - 20120101000000 20130101000000),這就是我們剛剛提交的任務。在這一行雙擊或單擊右側的箭頭圖標,頁面右側會顯示當前任務的詳細信息。 待構建任務完成,可以在Monitor頁面看到該任務狀態已被置為完成(Finished)。這時候,第一個Segment就構建完成了。前往Cube列表中查看,會發現該Cube的狀態已被置為“就緒(Ready)”了。

增量構建

在第一個Segment構建完成之后,我們開始構建第二個Segment。首先在Model頁面的Cube列表中找到該Cube,單擊右側的Actions按鈕,然后選擇“Build”,打開Cube構建確認對話框。 在這個對話框中,首先確認起始時間(Start Date)是2013-01-01 00:00:00,因為這是上次構建的結束日期,為保障所構建數據的連續性,Apache Kylin自動為新一次構建的起始時間更新為上次構建的結束日期。同樣的,在結束時間(End Date)里輸入2014-01-01 00:00:00,然后單擊Submit按鈕,開始構建下一年的Segment。

待構建完成,我們可以在Cube的詳情頁中查看,發現Cube的兩個Segment都已就緒。

3. 參考資料

  • http://kylin.apache.org/cn/

  • https://kyligence.gitbooks.io/kap-manual/content/zh-cn/introduction/concepts.cn.html

  • http://webdataanalysis.net/web-data-warehouse/multidimensional-data-model/

  • http://www.cnblogs.com/mq0036/p/4155832.html

 

來自:http://mp.weixin.qq.com/s/TMPOuBFnEByimm72Y_ta9g

 

 本文由用戶 caotans 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!