給大數(shù)據(jù)分析師的一雙大禮: Apache Kylin和Superset

作者:趙勇杰 何京珂

編輯:Sammi

分析師的挑戰(zhàn)

在大數(shù)據(jù)時代,使用傳統(tǒng)數(shù)據(jù)處理方式已經(jīng)無法滿足企業(yè)大規(guī)模數(shù)據(jù)的增長,而人工智能和 IoT 時代的到來讓處理超大規(guī)模數(shù)據(jù),解讀超大規(guī)模數(shù)據(jù)的需求更加迫在眉睫。 分析和理解超大規(guī)模數(shù)據(jù)集就成為這些企業(yè)要解決的當(dāng)務(wù)之急。

一重禮:Apache Kylin 開源 OLAP on Hadoop引擎

現(xiàn)代企業(yè)使用聯(lián)機(jī)分析處理 ( OLAP ) 技術(shù)來分析數(shù)據(jù),生成報表,從而幫助業(yè)務(wù)人員制訂商務(wù)決策。隨著大數(shù)據(jù)時代的來臨和 Hadoop 技術(shù)的興起,基于大數(shù)據(jù)平臺的 OLAP 分析又給擁抱大數(shù)據(jù)的企業(yè)帶來新的挑戰(zhàn)。

Apache Kylin[1] 作為 Apache 基金會首個開源的 OLAP 分析引擎,已在全球得到了廣泛的應(yīng)用。Kylin采取預(yù)計算技術(shù),可以為分析師在超大規(guī)模數(shù)據(jù)集上(PB/TB 級)提供亞秒級查詢能力。Kylin 專注于 OLAP 計算引擎,提供很精妙的技術(shù)設(shè)計: Kylin 的數(shù)據(jù)源除了可以來自于 Hadoop 上的 Hive 數(shù)倉,還可以接收 Kafka 傳遞而來的流式數(shù)據(jù); Cube 構(gòu)建引擎可以用 MapReduce,一些構(gòu)建步驟為了性能考量還可以選擇使用 Spark;構(gòu)建好的 Cube 默認(rèn)存儲在 HBase 中; 查詢則采用業(yè)界最普遍使用的 ANSI-SQL 查詢,分析師原有的 SQL 查詢、報表、分析等可以輕松遷移到 Kylin。

查詢接口上 Kylin 已經(jīng)做到 ODBC/JDBC/RESTful 方式,這給第三方集成提供了巨大想像空間。

這里請讀者留意,Kylin 設(shè)計精妙是指,Kylin 松耦合的設(shè)計完全可以讓數(shù)據(jù)源,計算引擎,Cube 存儲根據(jù)您自己使用場景而來做個性化定制——選擇權(quán)在您手里。

? 高性能高并發(fā): 支持TB到PB的數(shù)據(jù)規(guī)模上的亞秒級查詢。

? 易于使用: 提供易用的 ODBC/JDBC/RESTful API 供使用和與第三方工具集成。

? 經(jīng)濟(jì)性: 一次構(gòu)建可使得查詢提速千百倍;查詢越多越經(jīng)濟(jì)。

分析師期待可以快速的從不同的角度分析數(shù)據(jù)的情況,Kylin 作為 OLAP 引擎可以實(shí)現(xiàn)亞秒級查詢響應(yīng),很好地解決了分析師面臨的一個查詢等待個把小時的窘境;有了數(shù)據(jù)處理的引擎,企業(yè)在賦能其數(shù)據(jù)科學(xué)團(tuán)隊,工程師和業(yè)務(wù)分析師進(jìn)行基于數(shù)據(jù)的業(yè)務(wù)決策時,在前端仍需要的豐富的可視化圖形,排序過濾等基礎(chǔ)報表需求,對于高級分析師,使用其熟悉的 SQL 對數(shù)據(jù)進(jìn)行再次加工處理也是非常有必要的。

針對以上問題,同樣作為 Apache 軟件基金會正在孵化項目的 Superset 便成為不二之選.

二重禮:Superset 充滿活力的企業(yè)級商業(yè)智能平臺

Superset 是一個數(shù)據(jù)探索和可視化平臺,設(shè)計用來提供直觀的,可視化的,交互式的分析體驗。

Superset 提供了兩種分析數(shù)據(jù)源的方式:

用戶可以以單表形式直接查詢多種數(shù)據(jù)源,包括 Presto、Hive、Impala、SparkSQL、MySQL、Postgres、Oracle、Redshift、SQL Server、Druid 等。本文后續(xù)內(nèi)容也會詳細(xì)介紹Superset如何支持Kylin數(shù)據(jù)源。

一個 SQL 的 IDE 供高級分析師使用 SQL 查詢定義所需要分析的數(shù)據(jù)集,這種方法使用戶在一個查詢中實(shí)現(xiàn)用 Superset 查詢數(shù)據(jù)源的多表,并立即對查詢進(jìn)行可視化分析。

SUPERSET 的前世今生

Superset 起源于 2015 年初黑客馬拉松項目,曾經(jīng)使用過 Caravel 和 Panoramix 作為項目名。現(xiàn)在主要維護(hù)小組是 Airbnb 數(shù)據(jù)科學(xué)組,代碼托管在 Github。作為 Apache 軟件基金會孵化項目,Superset 目標(biāo)是要做成數(shù)據(jù)可視化平臺。

Superset 對于數(shù)據(jù)源端通過一個成熟的 OR-Mapping 方案對接了幾乎市面上所有數(shù)據(jù)庫產(chǎn)品,數(shù)據(jù)的分析和建模再使用 Pandas 統(tǒng)一加工序列化后由前端渲染展示. 進(jìn)而前端渲染出眾多富有表現(xiàn)力的可視化圖表,這些可視化技術(shù)包括但不限于: D3,react stack,mapbox,deck.gl。

筆者在使用 Superset 過程中也感覺到一些不足,例如無法通過權(quán)限隔離不同用戶可訪問的數(shù)據(jù)源,數(shù)據(jù)查詢暫時不支持下鉆操作,多數(shù)據(jù)源不容易做交互查詢等。但是瑕不掩瑜,Superset 依然是現(xiàn)在這個星球上最好的開源 BI 平臺。

Apache Kylin 與 Superset 集成:提升大數(shù)據(jù)技術(shù)生產(chǎn)力

交互式分析是 Apache Kylin 與 Superset 共同的產(chǎn)品目標(biāo),使用 Kylin 作為 Superset 查詢,數(shù)據(jù)經(jīng)過 Kylin Cube 的預(yù)計算處理,在 Superset 前端進(jìn)行可視化分析想必是快到飛起,真可謂是強(qiáng)強(qiáng)聯(lián)合。

Kyligence 數(shù)據(jù)科學(xué)小組開源了 kylinpy 項目完成了 Kylin 與 Superset 數(shù)據(jù)源的集成。現(xiàn)在我們就來手把手教讀者實(shí)現(xiàn) Kylin 和 Superset 的集成,并實(shí)現(xiàn)交互式的可視化分析。

準(zhǔn)備工作

1. 安裝 Apache Kylin

請參考?Apache Kylin installation guide

2. Apache Kylin 提供了樣例 Cube,方便大家學(xué)習(xí)使用。Kylin 啟動成功后,可以在 Kylin 安裝路徑下運(yùn)行以下命令生成樣例數(shù)據(jù) Cube:

./${KYLIN_HOME}/bin/sample.sh

運(yùn)行后,使用默認(rèn)的 Kylin 賬號 ADMIN / KYLIN 登陸界面,在 System 頁面點(diǎn)擊 Reload Metadata 即可看到樣例項目 Learn_kylin。

選擇樣例 Cube “Kylin_sales_cube”,點(diǎn)擊 Action -> Build。選擇日期不要晚于 2014-01-01 來進(jìn)行全量構(gòu)建。

點(diǎn)擊前往 Monitor 頁面查看 Cube 構(gòu)建的進(jìn)程,知道100%完成,Cube 就可以進(jìn)行查詢了。

前往 Insight 頁面執(zhí)行一個查詢驗證 Cube 能夠返回結(jié)果。

select part_dt,

sum(price) as total_selled,

count(distinct seller_id) as sellers

from kylin_sales

group by part_dt

order by part_dt

查詢會擊中新構(gòu)建的 Kylin_sales_cube。

3. 下面我們安裝 Superset,并初始化。

強(qiáng)烈建議使用虛擬環(huán)境來安裝所有的依賴包(virtualenv/virtualenvwrapper)

通過 PyPi 倉庫安裝 superset

pip install superset

創(chuàng)建初始超級用戶: admin/admin

fabmanager create-admin --app superset --username admin --password admin --firstname admin --lastname admin --email admin@fab.org

使用默認(rèn) sqllite metadata,位于 $HOME/.superset/superset.db,并且根據(jù) migrate 創(chuàng)建表結(jié)構(gòu)

superset db upgrade

初始化 role 等

superset init

執(zhí)行如上4條命令便可以在 POSIX 操作系統(tǒng)上部署 Superset,如想加載 Superset提供的例子數(shù)據(jù),可以再執(zhí)行

superset load_examples

4. 安裝 kylinpy

pip install kylinpy

5. 安裝驗證,如果一切順利,Superset daemon應(yīng)該可以跑起來了

-d 選項可以打開 debug 模式

superset runserver -d

Starting server with command:

gunicorn -w 2 --timeout 60 -b 0.0.0.0:8088 --limit-request-line 0 --limit-request-field_size 0 superset:app

[2018-01-03 15:54:03 +0800] [73673] [INFO] Starting gunicorn 19.7.1

[2018-01-03 15:54:03 +0800] [73673] [INFO] Listening at: http://0.0.0.0:8088 (73673)

[2018-01-03 15:54:03 +0800] [73673] [INFO] Using worker: sync

[2018-01-03 15:54:03 +0800] [73676] [INFO] Booting worker with pid: 73676

[2018-01-03 15:54:03 +0800] [73679] [INFO] Booting worker with pid: 73679

建立連接

現(xiàn)在所有的準(zhǔn)備工作已經(jīng)完畢,我們來試試在 Superset 中創(chuàng)建一個 Apache Kylin 數(shù)據(jù)源。

1. 瀏覽器打開 http://localhost:8088 帳號密碼是剛才 fabmanager 創(chuàng)建的 admin/admin。

點(diǎn)擊 Source —> Datasource,如下配置,注意如下幾點(diǎn):

SQLAlchemy URI 格式為:

kylin://:@:/

勾選 Expose in SQL Lab 后這個數(shù)據(jù)源便可以在 SQL Lab 中展示出來。

點(diǎn)擊 Test Connection 可以測試鏈接是否成功。

創(chuàng)建 Kylin 數(shù)據(jù)源

測試連接

查詢 Kylin 表單

連接成功后頁面最下會展示這個 Kylin 項目內(nèi)所有的表。

1. 點(diǎn)擊 Source —> Tables,添加 Table,此處需要手動輸入需要添加的表名。

2. 在所有列表中選定相應(yīng)的表,就可以開始查詢之旅啦。

使用 SQL Lab 查詢 Apache Kylin 多表

熟悉 Kylin 的讀者都知道,Kylin Cube 通常都是以多表關(guān)聯(lián)建模為基礎(chǔ)生成的,因此分析 Kylin Cube 的數(shù)據(jù)時,使用多表進(jìn)行查詢對于 Kylin 來說是非常常見的場景。在使用 Superset 分析 Kylin 數(shù)據(jù)時,我們可以使用 Superset 中的 SQL Lab 功能來查詢多表,并對其進(jìn)行可視化分析。

在這里我們以一個可以擊中 Kylin 中的 sample cube ‘kylin_sales_cube’ 的查詢?yōu)槔?/p>

查詢返回后點(diǎn)擊可視化按鍵即可針對當(dāng)前查詢進(jìn)行可視化分析。

你可以復(fù)制下面的完整查詢來體驗 SQL Lab 查詢 Kylin Cube 的功能。

select YEAR_BEG_DT,

MONTH_BEG_DT,

WEEK_BEG_DT,

META_CATEG_NAME,

CATEG_LVL2_NAME,

CATEG_LVL3_NAME,

OPS_REGION,

NAME as BUYER_COUNTRY_NAME,

sum(PRICE) as GMV,

sum(ACCOUNT_BUYER_LEVEL) ACCOUNT_BUYER_LEVEL,

count(*) as CNT

from KYLIN_SALES

join KYLIN_CAL_DT

on CAL_DT=PART_DT

join KYLIN_CATEGORY_GROUPINGS

on SITE_ID=LSTG_SITE_ID

and KYLIN_CATEGORY_GROUPINGS.LEAF_CATEG_ID=KYLIN_SALES.LEAF_CATEG_ID

join KYLIN_ACCOUNT

on ACCOUNT_ID=BUYER_ID

join KYLIN_COUNTRY

on ACCOUNT_COUNTRY=COUNTRY

group by YEAR_BEG_DT,

MONTH_BEG_DT,

WEEK_BEG_DT,

META_CATEG_NAME,

CATEG_LVL2_NAME,

CATEG_LVL3_NAME,

OPS_REGION,

NAME

使用 Superset 的多種功能查詢 Apache Kylin

根據(jù)很多 Apache Kylin 用戶在對接可視化及報表分析前端時,所提出的一些常見需求,我們對S uperset 的相應(yīng)功能也做了一些測試,可以說企業(yè)對于報表分析及可視化展現(xiàn)所需要的絕大部分功能,Superset 都已經(jīng)可以提供了。

排序

Superset 支持使用任意數(shù)據(jù)源上定義的度量進(jìn)行排序,不論這個度量是否在圖表上。

過濾功能

在 Superset 中有多種過濾功能都可以使用在對 Kylin 的查詢中。

1. 日期過濾

在 Superset 中你可以對定義為時間列的維度進(jìn)行日期和時間的過濾。

2. 維度過濾

對于其他非時間維度,Superset 也提供了維度的篩選器,支持 SQL 中的 in,not in,等于,不等于,大于等于,小于等于,小于,大于,like 等多種過濾方式。

3. 報表內(nèi)搜索

你可以在報表返回后使用搜索框功能對數(shù)據(jù)進(jìn)行篩選。

4. 度量過濾

對于度量 Superset 支持用戶直接寫入 SQL 的having 表達(dá)式。


5. 聯(lián)動過濾

使用 Superset 中提供的過濾框可視化組件,可以實(shí)現(xiàn)一個過濾器聯(lián)動過濾多個可視化圖形的效果。

如下圖,過濾框組件可以聯(lián)動控制儀表盤上的所有可視化圖形。

6. Top N

你可以通過對數(shù)據(jù)進(jìn)行排序和設(shè)置返回行數(shù)限制來實(shí)現(xiàn)展示 Top 10/Bottom 10 等功能。

7. 分頁

在返回的數(shù)據(jù)量較大時,Superset 支持設(shè)置每頁數(shù)據(jù)行數(shù)實(shí)現(xiàn)數(shù)據(jù)的分頁。

8. 多種可視化

Superset 提供多樣的可視化圖表選擇,這里僅以世界地圖和氣泡圖為例作為展示。

9. 其它功能

另外 Superset 還支持?jǐn)?shù)據(jù)導(dǎo)出 CSV,報表分享,查看報表 SQL 等功能。

10. 指紋支持

最重要的是,Superset 由于社區(qū)的貢獻(xiàn)已提供了中文版本!

Superset 使用了 Flask 的翻譯擴(kuò)展工具?Flask-Babel,使用了這個擴(kuò)展包后,每個對應(yīng)的語言版本只需要在翻譯文件中將對應(yīng)的 Superset 文字翻譯成中文即可,這使得 Superset 社區(qū)的中文用戶可以很容易的貢獻(xiàn)翻譯內(nèi)容。

總結(jié)

多個開源項目的結(jié)合往往能產(chǎn)生1+1>2的效果,Kylin 專注于 OLAP 計算引擎,Superset 專注于數(shù)據(jù)可視化展現(xiàn). 分析師手中的雙劍合璧實(shí)現(xiàn)交互式分析,讓企業(yè)使用大數(shù)據(jù)技術(shù)顯著提升生產(chǎn)力。

參考

【1】Apache Kylin

【2】kylinpy on Github

【3】Superset: Airbnb’s data exploration platform

【4】Superset on Github

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內(nèi)容