大數據之Kylin入門——第二章Kylin入門

1.數據準備

hive建表語句和一些測試數據:

部門表:

create external table if not exists default.dept(
deptno int,
dname string,
loc int
) row format delimited fields terminated by '\t';

10	ACCOUNTING	1700
20	RESEARCH	1800
30	SALES	1900
40	OPERATIONS	1700


員工表:

create external table if not exists default.emp(
empno int,
ename string,
job string,
mgr int,
hiredate string, 
sal double, 
comm double,
deptno int) row format delimited fields terminated by '\t';


7369	SMITH	CLERK	7902	1980-12-17	800.00		20
7499	ALLEN	SALESMAN	7698	1981-2-20	1600.00	300.00	30
7521	WARD	SALESMAN	7698	1981-2-22	1250.00	500.00	30
7566	JONES	MANAGER	7839	1981-4-2	2975.00		20
7654	MARTIN	SALESMAN	7698	1981-9-28	1250.00	1400.00	30
7698	BLAKE	MANAGER	7839	1981-5-1	2850.00		30
7782	CLARK	MANAGER	7839	1981-6-9	2450.00		10
7788	SCOTT	ANALYST	7566	1987-4-19	3000.00		20
7839	KING	PRESIDENT		1981-11-17	5000.00		10
7844	TURNER	SALESMAN	7698	1981-9-8	1500.00	0.00	30
7876	ADAMS	CLERK	7788	1987-5-23	1100.00		20
7900	JAMES	CLERK	7698	1981-12-3	950.00		30
7902	FORD	ANALYST	7566	1981-12-3	3000.00		20
7934	MILLER	CLERK	7782	1982-1-23	1300.00		10

2.創建工程

1.登陸系統

2.創建工程

填入工程名

3.導入數據

最開始我們在hive中創建了兩張表並導入了數據,這裏直接從hive拉取數據過來。

選擇數據源Data Source

選擇第二項,從列表中導入。

選擇我們在hive中建立的兩張表,這裏並沒有將數據導入,只是導入了表的元數據。

導入成功後,頁面上就顯示了我們剛導入的兩張表。

4.創建model

這裏說明下,kylin目前只支持的數倉模型是星型模型,雪花模型還不支持。

給model取名

選擇事實表。其實員工表,部門表都是維度表,我這裏只有兩張表就以員工表作爲事實表。

添加維度表

先選擇事實表要關聯的維度表,然後選擇兩張表關聯的字段

選擇維度信息,維度信息也就是你最終OLAP分析是以哪些方面來計算的。

選擇度量信息,度量信息也就是你從各個維度分析,最終有個指標來衡量你的分析。

partition和where這裏不填寫,點擊next。

這裏說明下partition和where到底是幹什麼用的。

hive的表內容更新可能有增量更新和全量更新。如果是增量更新,一般都是按照日期來更新,所以partition就要選擇日期字段,這樣hive按照每日增量更新數據後,Kylin根據每日增量構建數據再彙總,計算一份新的數據保存起來。此外,還可以聯合構建cube的設置,選擇多長時間匯聚一次。cube設置位置如下圖所示位置:

where是起過濾作用,從hive導入過來計算的數據可能不需要全量的數據,所以在這裏加上過濾條件,過濾掉不需要的數據。

model創建完成

5.創建cube

選取cube,並填寫cube name,有需要可以填寫郵件,cube在構建後各種狀態時會給你發送郵件。

現在新增維度,剛纔model設置了維度,這裏構建cube的時候可以重新設定維度。

這裏選擇如下幾項維度進行構建,並且選擇normal(第五章cube優化會詳細講解normal,derived)。

現在設立度量到底計算什麼指標。

這裏給你自己的度量取個名字。然後選擇expression,也就是怎麼計算你的度量,我這裏選的是對工資求和,用的sum。param type有colume和constant,一般求count的時候纔是constant。最後選擇要計算的列,這裏選擇的是薪水sal。最後選擇OK保存。

保存之後,後面的步驟4,5,6,7都直接點擊next就行。第五章講cube優化的時候會講述這些到底是做什麼的。

6.查看cube。

保存之後你可以查看我們構建cube的sql語句是什麼,也可以查看我們到底構建了多少種維度。

 

7.構建cube。

現在我們可以開始讓kylin來構建我們的cube。

我們可以查看cube構建的過程以及每個步驟的日誌。

cube在執行過程中,如果報以下異常,說明你的hadoop歷史服務沒有打開,命令$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver啓動歷史服務。然後jps查看服務是否啓動。然後resume從失敗的地方重新開始執行cube。

org.apache.kylin.engine.mr.exception.MapReduceException: Exception: java.net.ConnectException: Call From hadoop102/192.168.1.102 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: 拒絕連接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
java.net.ConnectException: Call From hadoop102/192.168.1.102 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: 拒絕連接; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
	at org.apache.kylin.engine.mr.common.MapReduceExecutable.doWork(MapReduceExecutable.java:173)
	at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:164)
	at org.apache.kylin.job.execution.DefaultChainedExecutable.doWork(DefaultChainedExecutable.java:70)
	at org.apache.kylin.job.execution.AbstractExecutable.execute(AbstractExecutable.java:164)
	at org.apache.kylin.job.impl.threadpool.DefaultScheduler$JobRunner.run(DefaultScheduler.java:113)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

8.查詢數據。

cube構建完成後,我們可以運行sql來查詢結果,結果可以以圖表的形式展示,也可導出最終結果。

 

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