研發解決方案#數據開放實驗室:再戰即席查詢和數據開放
創建於2017/9/7 最後更新於2017/9/16
關鍵詞:大數據,HBase,數據開放,即席查詢,數據授權,HDFS,Zeppelin,Kylin,
提綱:
解決什麼場景
即席查詢的發展歷程
五個特性
小結
數據開放實驗室(OpenDataLab)是數據中心繼魔鏡(競情數據分散式抓取管理平台)、魔盒(大數據協作平台)、數屏(可視化監控屏管理平台)之後推出的又一款大數據應用。
它的現階段目標是將我司收集到的各種數據,經過脫敏、清洗等處理之後,授權下游企業使用,通過即席查詢確定數據格式,定義API,通過API拉取數據。
它的用戶既有企業內部用戶,也有企業外部用戶。
它的開發者有:前台少明,川川,中舟,順闖,倉庫清勇,興申,明軍,明黎,梁鍵等。
螞蟻金服曾把大數據應用劃分為四個階段,如下圖所示:
圖1 四個應用階段
雖然我們的數據開放實驗室對標的是處於第四階段的螞蟻數巢之雲數據實驗室,但是第一我們現階段數據量還是太小,第二螞蟻金服強調的是「可用不可見,相逢不相識」的可信的大數據加工處理環境,而我們強調的是將大數據以自助定製API的方式輸出給可信的合作夥伴,本質上還是即席查詢的變種。
0x00,解決什麼場景
我們定義數據開放實驗室要解決三件事:
1)把數據倉庫的數據複製到實驗室數據專區。把數據專區里的數據授權給企業,在這個數據複製的過程中,可以對數據做脫敏等清洗工作;
2)企業可以看到企業專區里的表結構和數據字典,可以做即席查詢(Ad-hoc),當然只展示結果集的前1000條記錄;
3)企業如果覺得結果集符合需求,可以將查詢發布為 API,通過介面調用,可以將數據拉到企業本地。
0x01,即席查詢的發展歷程
面向數據倉庫的即席查詢,這個工作在窩窩開展過,技術選型為 shib+node.js+Presto。Presto 也是幾年前諸多互聯網公司提升 Ad-hoc 響應速度的重要選擇之一。
到了2016、2017年,即席查詢有了更多的選擇,如 Apache Zeppelin,Apache Kylin,原先用了 Presto 的那撥公司陸續接入了 Kylin,如美團點評,唯品會,鏈家,京東POP,國美商城,百度地圖。
至於 Apache Zeppelin,咱們在2016年上半年做過調研,那時候的想法就是把 Zeppelin 作為自助式報表和即席查詢的合體,當作臨時數據提取任務的解決方案,放在系統運維部主持的 DataFlash 項目里。
2017年3月3日,明軍做了 Kylin 技術演示。我們發現一個嚴重的問題,由於給企業授權數據是分批分期進行的,如果 Kylin 建了多個 Cube,不同 Cube 之間的表不能聯表查詢,那就違背了數據開放實驗室的需求,你想企業客戶都已經看到了多張表,不可能說因為底層 Cube 的限制而不允許聯表查詢。唯品會2016年12月做的 Kylin 分享中提到,他們基於 Presto+Kylin 雙引擎的架構做了改造,支持了跨 Cube Join。
2017年7月14日數據開放實驗室第一次公開演示。
2017年8月18日數據開放實驗室正式上線。
0x02,五大特性
接下來展示一下這個產品企業前台的五個特性。
第一,企業前台的 dashboard 展示集群資源使用情況,已授權數據表數量,已發布API數量,如下圖所示:
圖3 首頁dashboard
當 Hadoop 集群的CPU、內存使用情況變為紅色時,不建議進行數據查詢操作。
第二,數據列表可以查看數據字典,數據大小。
第三,查詢編輯器里支持按 tab 鍵提示關鍵字、表名、欄位名,還支持一鍵格式化。
圖6 智能提示和格式化
咱們這裡的 SQL 採用的是類似於 SQL 的語法,可以看作是標準 SQL 的子集,但不能因此簡單地把 OpenDataLab 等價成?個資料庫,它在一些查詢語法上跟標準 SQL 有所不同,需要看幫助文檔。
還可以把當前 SQL 語句保存下來,以後能在「查詢記錄」列表裡找回來。
查詢的執行過程會實時列印出來,如下圖所示:
圖7 執行信息
第四,查詢之後,可以發布為 API 了,臨時或一次性使用數據,可以選擇「單次」,周期性獲取數據,選擇「周期」。
第五,API 發布後,可以在 API 列表裡找到,能看到 API 任務進度和數據定製進度。加速狀態為「已加速」的分析才能被外部程序訪問到。
既可以由程序調用 API,同時為了方便內部用戶導出數據,這裡也提供了下載報表的按鈕。
數據開放實驗室還有一個管理後台,能開通企業,對企業授權數據,定義數據脫敏和轉換等規則,這裡不再贅述。
0x03,小結
就醬,底層有 DataFlash 集群,上層應用有魔盒、魔鏡、數屏、數據開放實驗室等大數據應用或工具。
-EOF-
贈圖一枚
GIF/1K
吐槽若干:
RT @hengdm:一件看似簡單的事之所以一直沒人能做好,是因為它有看不見的大坑。
/*說一個實例。
昨天看到一篇《微信iOS收款到賬語音提醒開發總結》。需求很簡單,為了解決小商戶老闆們在頻繁交易中不方便核對、確認到賬的痛點,微信要做收款到賬語音提醒。
技術實現嘛,聽上去也不難,收款到賬語音提醒需要收款方在收到款後,播放一段TTS合成語音播報金額,微信在前台時可以通過模板消息將需要播報的金額帶下來,再請求TTS數據並播放,但是app在掛起或者被kill掉的情況下要如何請求語音數據並播放呢?
但遇到的問題有:
零,有人說,使用 VoIP 方式喚醒 App,蘋果審核團隊會拒審的。
微信開發者說,還好,蘋果官方文檔確實提到了只有 VoIP 應用才能接入 Push Kit,微信本身支持視頻通話和語音通話的功能,所以收款語音提醒只是復用這個通道。
一,有大佬吐槽,如果微信支付開啟了到帳提醒,即使手機靜音了,也會播報。
好,改。
但是,蘋果在iOS5之後便禁止監聽靜音按鍵。
悲催的開發者最後在 Reddit 上找到了一種曲線救國的方式,實現起來也不複雜:使用AudioServicesPlaySystemSound播放一段0.2s的空白音頻,並監聽音頻播放完成事件,如果從開始播放到回調完成方法的間隔時間小於0.1s,則意味當前靜音開關為開啟狀態。
二,用戶吐槽音量太小聽不見。
原因是用戶設置的系統音量過小所導致。
那也得解決啊。
最終的解決方案借鑒了進入收付款展示二維碼時自動調節屏幕亮度的方案:如果屏幕亮度未達到閾值,則調高屏幕亮度到閾值,離開頁面時,將亮度設回原亮度。同理,播放提示音時,若用戶設置的系統音量小於閾值,則調節到閾值。提示音播放完畢後,將提示音調回原音量。
*/
昨天面試的時候我告訴候選人,一個公司如果讓一幫人只做業務另一幫人只做架構(其實也只是技術選型而已),這樣是不對的。
第一,每個工程師都有更高更快更強的願望,我們講究的是平凡人(可以)做非凡事。
第二,只做技術選型遠遠不夠。技術管理分為三個層次:研發能力,研發效率,研發活力。「研發能力的提升」是研發部門的生理需求,「生產效率的提升」是公司的安全需求,「研發活力的提升」是研發人員的社交需求和尊重需求。三者循環往複,互相促進,缺一不可。
RT @cxiaoji:「1996年6月,阿里亞娜五號火箭第一次試射,表示水平速度的64位浮點數值被轉換為16位整型代入運算,導致火箭在高速下水平翻滾解體。」
「他們要是用JavaScript就沒事了」
/*註:Ariane的開發語言是Ada。設計Ariane4火箭時堅信水平速率是不會超過一個16-bit signed integer的。但Ariane5火箭的水平速率比4高出了5倍,code review時沒有注意到這一點,導致數據轉換時溢出,控制慣性導航系統的計算機向控制引擎噴嘴的計算機發送了一個無效數據,於是火箭偏離它的飛行路徑,解體並爆炸。*/
-END-
※上海勾勒「智能汽車」未來圖景 成立安全測評實驗室
※男子實驗化身液壓機狂魔將萬元鑽石放置在下面,隨後發生的一幕讓人不敢相信
※一張圖帶你走進那些實驗汪的苦與樂
※心理學家:這8個心理學實驗最莫名其妙,第7個臭名昭著!
※清除家裝污染只有這樣 現場實驗:炭、綠蘿、凈化器不靠譜!
TAG:實驗 |