給大數(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)機分析處理 ( 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)濟性: 一次構(gòu)建可使得查詢提速千百倍;查詢越多越經(jīng)濟更哄。

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

針對以上問題乙漓,同樣作為 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ù)集萍膛,這種方法使用戶在一個查詢中實現(xiàn)用 Superset 查詢數(shù)據(jù)源的多表吭服,并立即對查詢進行可視化分析。

SUPERSET 的前世今生

Superset 起源于 2015 年初黑客馬拉松項目蝗罗,曾經(jīng)使用過 Caravel 和 Panoramix 作為項目名⊥ё兀現(xiàn)在主要維護小組是 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)一加工序列化后由前端渲染展示. 進而前端渲染出眾多富有表現(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 前端進行可視化分析想必是快到飛起,真可謂是強強聯(lián)合洋措。

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

準(zhǔn)備工作

1. 安裝 Apache Kylin

請參考?Apache Kylin installation guide

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

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

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

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

點擊前往 Monitor 頁面查看 Cube 構(gòu)建的進程珠月,知道100%完成,Cube 就可以進行查詢了楔敌。

前往 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旺韭,并初始化氛谜。

強烈建議使用虛擬環(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危虱。

點擊 Source —> Datasource,如下配置唐全,注意如下幾點:

SQLAlchemy URI 格式為:

kylin://:@:/

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

點擊 Test Connection 可以測試鏈接是否成功蕊玷。

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

測試連接

查詢 Kylin 表單

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

1. 點擊 Source —> Tables弥雹,添加 Table垃帅,此處需要手動輸入需要添加的表名。

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

使用 SQL Lab 查詢 Apache Kylin 多表

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

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

查詢返回后點擊可視化按鍵即可針對當(dāng)前查詢進行可視化分析髓窜。

你可以復(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ù)源上定義的度量進行排序畅哑,不論這個度量是否在圖表上。

過濾功能

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

1. 日期過濾

在 Superset 中你可以對定義為時間列的維度進行日期和時間的過濾荠呐。

2. 維度過濾

對于其他非時間維度,Superset 也提供了維度的篩選器砂客,支持 SQL 中的 in泥张,not in,等于鞠值,不等于媚创,大于等于,小于等于彤恶,小于筝野,大于晌姚,like 等多種過濾方式。

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

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

4. 度量過濾

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


5. 聯(lián)動過濾

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

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

6. Top N

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

7. 分頁

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

8. 多種可視化

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

9. 其它功能

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

10. 指紋支持

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

Superset 使用了 Flask 的翻譯擴展工具?Flask-Babel听系,使用了這個擴展包后,每個對應(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). 分析師手中的雙劍合璧實現(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)系作者
  • 序言:七十年代末霎褐,一起剝皮案震驚了整個濱河市郑藏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘩欺,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拌牲,死亡現(xiàn)場離奇詭異俱饿,居然都是意外死亡,警方通過查閱死者的電腦和手機塌忽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門拍埠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人土居,你說我怎么就攤上這事枣购℃姨剑” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵棉圈,是天一觀的道長涩堤。 經(jīng)常有香客問我,道長分瘾,這世上最難降的妖魔是什么胎围? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮德召,結(jié)果婚禮上白魂,老公的妹妹穿的比我還像新娘。我一直安慰自己上岗,他們只是感情好福荸,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著肴掷,像睡著了一般敬锐。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捆等,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天滞造,我揣著相機與錄音,去河邊找鬼栋烤。 笑死谒养,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的明郭。 我是一名探鬼主播买窟,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼薯定!你這毒婦竟也來了始绍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤话侄,失蹤者是張志新(化名)和其女友劉穎亏推,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體年堆,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡吞杭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了变丧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芽狗。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖痒蓬,靈堂內(nèi)的尸體忽然破棺而出童擎,到底是詐尸還是另有隱情滴劲,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布顾复,位于F島的核電站班挖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捕透。R本人自食惡果不足惜聪姿,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望乙嘀。 院中可真熱鬧末购,春花似錦、人聲如沸虎谢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婴噩。三九已至擎场,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間几莽,已是汗流浹背迅办。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留章蚣,地道東北人站欺。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像纤垂,于是被迫代替她去往敵國和親矾策。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359

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