解密Airbnb數據流編程神器:Caravel 顛覆許多大數據分析平臺的開源工具
概述
我非常認同前百度數據工程師、現 神策分析 創始人桑老師最近談到的數據分析三重境界:
-
統計計數
-
多維分析
-
機器學習
數據分析的統計計數和多維分析,我們通常稱之為數據探索式分析,這個步驟旨在了解數據的特性,有助于我們進一步挖掘數據的價值。而基于我們對數據的理解,再引入機器學習的算法對數據做出預測就變得水到渠成了。
現實世界里,大部分的公司更多時間其實沒有這個精力去搭建復雜的數據分析平臺,面對快速變化的業務需求,很多數據工程師都把自己的青春埋葬在SQL里了。(其實我也是埋葬在SQL里的)
這幾年,所謂的無埋點技術、自助式分析等等概念開始興起,得益于數據領域的快速發展,國內外也涌現了大量基于數據分析平臺的start-ups,而隨著技術的發展,許多創業公司也是抱團取暖組成一個更大的團體。
考慮到國內數據安全性的問題,即使我們使用大廠比如百度的網站分析服務也很難保證數據安全性,私有化部署才是很多企業級解決方案的王道。
隨著 Caravel 被Airbnb的數據科學部門開源了,我看到的是有許多數據分析平臺的創業公司或許要轉變方向了,自助式分析將不再依賴于各大廠商!
什么是Caravel
Caravel的中文翻譯是快船,而Caravel其實是一個自助式數據分析工具,它的主要目標是簡化我們的數據探索分析操作,它的強大之處在于整個過程一氣呵成,幾乎不用片刻的等待。
Caravel 的特性
Caravel通過讓用戶創建并且分享儀表盤的方式為數據分析人員提供一個快速的數據可視化功能。
在你用這種豐富的數據可視化方案來分析你的數據的同時,Caravel還可以兼顧數據格式的拓展性、數據模型的高粒度保證、快速的復雜規則查詢、兼容主流鑒權模式(數據庫、OpenID、LDAP、OAuth或者基于Flask AppBuilder的REMOTE_USER)
通過一個定義字段、下拉聚合規則的簡單的語法層操作就讓我們可以將數據源在U上豐富地呈現。Caravel還深度整合了Druid以保證我們在操作超大、實時數據的分片和切分都能行云流水。
數據庫支持
Caravel 是基于 Druid.io 設計的,但是又支持橫向到像 SQLAlchemy 這樣的常見Python ORM框架上面。
那Druid又是什么呢?
Druid 是一個基于分布式的快速列式存儲,也是一個為BI設計的開源數據存儲查詢工具。Druid提供了一種實時數據低延遲的插入、靈活的數據探索和快速數據聚合。現有的Druid已經可以支持擴展到TB級別的事件和PB級的數據了,Druid是BI應用的最佳搭檔。
想必,你已經受夠了Hive那個龜速查詢,迫不及待想體驗一下這種酣暢淋漓的快感了吧!
實戰
既然,要行云流水,沒有Docker是不行的,想要了解一下Docker可以參考之前的文章: 海納百川 有容乃大:SparkR與Docker的機器學習實戰
這里我默認你已經具備了使用Daocloud加速Docker的知識。
本地跑Docker
下載鏡像:
dao pull kochalex/caravel
跑容器
docker run -p 8088:8088 -d kochalex/caravel
查詢一下你的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
這樣我們又是三行代碼搞定了一個大數據分析神器。
需要注意到,這個 Caravel 容器里的默認鑒權配置是:
username: admin password: caravel_admin
在線Demo
下面我提供了Caravel的一個在線Demo:
http://52.33.104.157:8088/login/
下面是儀表盤的交互式分析頁面:
我們可以導出JSON、CSV文件、直接得到SQL語句甚至分享頁面鏈接。
下面是全球人口的一個分析儀表盤,感覺再改動一下就可以做信息圖了,大數據分析也不在話下。
下面是我最喜歡的sankey chart:
架構
看到如此驚艷的數據產品,想必你也很想自己動手做一個吧!讓我們一起看看整體的架構。
后端
整個項目的后端是基于Python的,用到了Flask、Pandas、SqlAlchemy。
此外,也關注到Caravel的緩存機制值得我們學習:
前端
自然前端是JS的天下,用到了npm、react、webpack,這意味著你可以在手機也可以流暢使用。