[原]解密Airbnb 自助BI神器:Superset 顛覆 Tableau

概述

我很是認同前百度數據工程師、現神策分析創始人桑老師最近談到的數據分析三重境界:html

  1. 統計計數前端

  2. 多維分析python

  3. 機器學習mysql

數據分析的統計計數和多維分析,咱們一般稱之爲數據探索式分析,這個步驟旨在瞭解數據的特性,有助於咱們進一步挖掘數據的價值。而基於咱們對數據的理解,再引入機器學習的算法對數據作出預測就變得水到渠成了。react

現實世界裏,大部分的公司更多時間其實沒有這個精力去搭建複雜的數據分析平臺,面對快速變化的業務需求,不少數據工程師都把本身的青春埋葬在SQL裏了。(其實我也是埋葬在SQL裏的)webpack

這幾年,所謂的無埋點技術、自助式分析等等概念開始興起,得益於數據領域的快速發展,國內外也涌現了大量基於數據分析平臺的start-ups,而隨着技術的發展,許多創業公司也是抱團取暖組成一個更大的團體。git

考慮到國內數據安全性的問題,即便咱們使用大廠好比百度的網站分析服務也很難保證數據安全性,私有化部署纔是不少企業級解決方案的王道。github

隨着 Superset 被Airbnb的數據科學部門開源了,我看到的是有許多數據分析平臺的創業公司或許要轉變方向了,自助式分析將再也不依賴於各大廠商!web

什麼是Superset

Superset的中文翻譯是快船,而Superset實際上是一個自助式數據分析工具,它的主要目標是簡化咱們的數據探索分析操做,它的強大之處在於整個過程一鼓作氣,幾乎不用片刻的等待。算法

Superset 的特性

Superset經過讓用戶建立而且分享儀表盤的方式爲數據分析人員提供一個快速的數據可視化功能。
在你用這種豐富的數據可視化方案來分析你的數據的同時,Superset還能夠兼顧數據格式的拓展性、數據模型的高粒度保證、快速的複雜規則查詢、兼容主流鑑權模式(數據庫、OpenID、LDAP、OAuth或者基於Flask AppBuilder的REMOTE_USER)
經過一個定義字段、下拉聚合規則的簡單的語法層操做就讓咱們能夠將數據源在U上豐富地呈現。Superset還深度整合了Druid以保證咱們在操做超大、實時數據的分片和切分都能行雲流水。

database

數據庫支持

Superset 是基於 Druid.io 設計的,可是又支持橫向到像 SQLAlchemy 這樣的常見Python ORM框架上面。

那Druid又是什麼呢?

Druid 是一個基於分佈式的快速列式存儲,也是一個爲BI設計的開源數據存儲查詢工具。Druid提供了一種實時數據低延遲的插入、靈活的數據探索和快速數據聚合。現有的Druid已經能夠支持擴展到TB級別的事件和PB級的數據了,Druid是BI應用的最佳搭檔。

想必,你已經受夠了Hive那個龜速查詢,火燒眉毛想體驗一下這種酣暢淋漓的快感了吧!

實戰

既然,要行雲流水,沒有Docker是不行的,想要了解一下Docker能夠參考以前的文章:海納百川 有容乃大:SparkR與Docker的機器學習實戰

這裏我默認你已經具有了使用Daocloud加速Docker的知識。

本地跑Docker

下載鏡像:

docker pull index.tenxcloud.com/7harryprince/Superset

跑容器

docker run -p 8088:8088 -d index.tenxcloud.com/7harryprince/Superset

查詢一下你的docekr ip

docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM   DOCKER    ERRORS
default   -        virtualbox   Running   tcp://192.168.99.100:2376           v1.9.1    
dev       -        virtualbox   Saved                                         Unknown

這裏能夠看到個人默認Docker的IP是192.168.99.100

因此須要在瀏覽器中訪問 192.168.99.100:8088

這樣咱們又是三行代碼搞定了一個大數據分析神器。

須要注意到,這個 Superset 容器裏的默認鑑權配置是:

username: admin
password: Superset_admin

在線Demo

下面我提供了Superset的一個在線Demo:

http://52.33.104.157:8088/login/

下面是儀表盤的交互式分析頁面:

Superset

咱們能夠導出JSON、CSV文件、直接獲得SQL語句甚至分享頁面連接。

下面是全球人口的一個分析儀表盤,感受再改動一下就能夠作信息圖了,大數據分析也不在話下。

world

下面是我最喜歡的sankey chart:

架構

看到如此驚豔的數據產品,想必你也很想本身動手作一個吧!讓咱們一塊兒看看總體的架構。

後端

整個項目的後端是基於Python的,用到了Flask、Pandas、SqlAlchemy。

  • Flask AppBuilder(鑑權、CRUD、規則)

  • Pandas(分析)

  • SqlAlchemy(數據庫ORM)

此外,也關注到Superset的緩存機制值得咱們學習:

  • 採用memcache和Redis做爲緩存

  • 級聯超時配置

  • UI具備時效性控制

  • 容許強制刷新

前端

天然前端是JS的天下,用到了npm、react、webpack,這意味着你能夠在手機也能夠流暢使用。

  • d3 (數據可視化)

  • nvd3.org(可重用圖表)

侷限性

  • Superset的可視化,目前只支持每次可視化一張表,對於多表join的狀況還無能爲力

  • 依賴於數據庫的快速響應,若是數據庫自己太慢Superset也沒什麼辦法

  • 語義層的封裝還須要完善,由於druid原生只支持部分sql。

參考資料

推薦產品

神策目前提供私有化的數據分析平臺解決方案,根據桑老師的說法,如今考慮到安全性的問題,尚未作到Docker部署,只能遠程部署(大概半個小時),這裏有一絲淡淡的遺憾。

做爲分享主義者(sharism),本人全部互聯網發佈的圖文均聽從CC版權,轉載請保留做者信息並註明做者 Harry Zhu 的 FinanceR專欄:https://segmentfault.com/blog...,若是涉及源代碼請註明GitHub地址:https://github.com/harryprince。微信號: harryzhustudio商業使用請聯繫做者。

相關文章
相關標籤/搜索