淺析數據查詢與可視化工具--Redash

淺析數據查詢與可視化工具--Redash

來自專欄 谷震平的大數據專欄

零 前言

Redash is an open source tool for teams to query, visualize and collaborate. Redash is quick to setup and works with any data source you might need so you can query from anywhere in no time.

from Make Your Company Data Driven

接觸Redash還是在2017年春天,應DW、BA對Redash的數據查詢與可視化的需求,做了二次開發的工作。深度定製過許可權,Saml認證,前端頁面等模塊,也優化過資料庫連接的模塊。

總之對於Redash的工作原理有些認識,所以在這裡班門弄斧,互通有無。懂分享的人,一定會快樂!

文章結構:

  • Redash的工作原理
  • Redash的適用場景
  • 搭建二次開發環境

一 Redash的工作原理

看官老爺們,要理解Redash的後端原理,必須先理解Celery。不了解,可以先離開30分鐘閱讀這位同學寫的文章:《使用Celery》。

開啟一圖勝千言環節:

Redash 後端架構圖

上圖可知,Redash採用Celery非同步架構,資料庫介面層豐富,功能模塊也多樣化。

多說一點,Celery在Redash後端里佔據了很大比重。工作時,Celery會以Redis作為消息代理,可以通過flower去監控任務狀態。worker在執行任務時,可能觸發機器的物理限制(內存限制等),會導致worker進程死亡,整個redash不可查詢數據。

在二次開發的需求里,數據介面層應該是最需要改動的地方。特別是自帶的Hive連接模塊,性能較差,可以適當優化。


二 Redash的適用場景

先來一波簡介三連:

Redash Query功能界面

Redash Visualization功能界面

Redash Dashboard功能界面

官方給出的主要功能:

1. Query editor - enjoy all the latest standards like auto-complete and snippets. Share both your results and queries to support an open and data driven approach within the organization.

2. Visualization - once you have your dataset, select one of our /9 types of visualizations/ for your query. You can also export or embed it anywhere.

3. Dashboard - combine several visualizations into a topic targeted dashboard.

4. Alerts - get notified via email, Slack, Hipchat or a webhook when your querys results need attention.

5. API - anything you can do with the UI, you can do with the API. Easily connect results to other systems or automate your workflows.

在實際使用中,主要以Query,Visualization和Dashboard三個功能為核心。下面舉幾個栗子。

Case 1: 數據表或數據模型在不同數據源。Redash可以集成多數據源,用戶可一鍵切換。

Case 2: 快速建立更加直觀的圖表。Redash提供9種可視化方法,涵蓋常用圖表,用戶只需要簡單培訓就可以自行做圖。

Case 3: 設置許可權,保護核心、敏感的數據/圖表。比如,上市公司的業績數據不可以被所有同學查到。Redash通過分組模塊,設置不同的數據源,即可隔離。

Case 4: 過濾傻白甜用戶拖死資料庫,干垮集群。比如,寫了類似select * from table的SQL查詢語句,但是不知道可能造成的後果。這種情況,對Redash做二次開發,深度定製查詢模塊(資料庫介面層)。

Case 5: 共享有價值的數據和圖表。當某位同學完成了一個數據的價值挖掘,想分享給其他同學,Redash提供Dashboard功能(可永久分享出去)或生成一個臨時的有生命周期的鏈接。

以上5個栗子,是筆者比較常見的。歡迎留言,一起探討某些需求的解決方案。


三 搭建二次開發環境

二次開發的環境主要有3部分: 前端node環境;後端Python;元數據環境。在元數據的選擇上,盡量不要用MySQL,Redash對MySQL支持不友好(查MySQL的支持還可以)。

先過一遍官網文檔:《Developer Installation Guide》。通過該文,即可搭建好開發環境,筆者不再贅述。

在此基礎上,進行二次開發,需要了解各功能對應的文件夾。以Redash 2.0.1版本為例:

找到核心包里,便可以對各個功能進行二次開發。不想說的太具體,正在二次開發的同學可以私信交流,知無不言。

另外,不想開發,只想裝下用用的同學,推薦Docker版的(不需要安裝PG和redis),請戳github地址:repertory/docker-redash。


四 結語

本文只是淺析了一下Redash的原理和功能,介紹了下二次開發的事情。水平有限,歡迎指正。希望繼續深扒Redash的同學,可以留言評論,告訴筆者你的idea~


推薦閱讀:

熱雲數據:數說買量| 買量?你是為啥買不起的!
HDFS分散式文件系統介紹
為什麼說「大數據」可能被人們過度神化了
互聯網數據分析之道:轉化篇
oVirt安裝配置——第四章(創建網路篇)

TAG:大數據 | 數據可視化 | 數據 |