1. 程式人生 > 其它 >資料分析師幹了專業數倉工程師的活,自如是怎麼做到的?

資料分析師幹了專業數倉工程師的活,自如是怎麼做到的?

資料分析師作為企業資料資產的締造者之一,具有一定的維度與指標體系管理、血緣分析、ETL 排程平臺等技能。能夠靈活使用排程平臺會為資料分析師帶來很大的便利,然而對於程式設計技能水平參差不齊的資料分析師來說,一個操作簡單,使用成本低的排程平臺才能讓他們如虎添翼,而不是增加額外的學習成本。

與大多企業相比,自如大資料平臺的獨特之處在於,大量的數倉加工並非由專業的數倉工程師完成,而是由資料分析師所做。而自如的資料分析師之所以能夠做到專業團隊才能完成的複雜的資料處理、分析工作,與其排程系統遷移到 Apache DolphinScheduler 分不開。

在不久前的 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,自如大資料研發經理 劉濤,為我們分享了受資料分析師們歡迎的排程系統是什麼樣的。

劉濤
自如大資料研發經理,負責自如大資料基礎平臺構建,建設一站式大資料開發平臺。

01 自如大資料平臺現狀

自如大資料平臺
上圖是自如大資料離線平臺的簡單圖示,資料來源包括 MySQL、Oracle 等業務庫資料,以及各種日誌資料,通過 Hive 離線 T 加 1 採集、另外使用Hive acid加上Flink實現了一個10分鐘級別的業務庫資料更新。

資料加工是分析師關心的部分,這個過程可以配置排程、配置依賴和 SQL 開發。而在資料落地上,我們採用了 ClickHouse 的 OLAP 引擎,資料應用層使用網易有數提供報表平臺。

自如的大資料平臺與業界大多數平臺相差不大,但獨特之處在於除了支援專業數倉開發工程師外,大量的資料分析師參與到了數倉加工之中。這就要求大資料平臺要足夠簡化。

02 分析師的期望

由於資料分析師的編碼水平參差不齊,有些分析師會寫 SQL,而有些分析師根本不會寫 SQL。即使是對於會寫 SQL 的分析師,在面對任務依賴概念的理解上,也會覺得難度很大。

因此,分析師群體對於排程的期望是要簡單,上手成本低。

03 Airflow的實現方式


一開始,自如選用的是 Airflow,使用Airflow 視覺化外掛Airflow DAG createmanager plug-in來供分析師用,底層使用hivepartitionsensor,用資料依賴的方式配置排程,便於分析師理解和使用,這套解決方案,對於分析師來說體驗尚可,但是面臨幾個較大的問題:

資料依賴的底層實現導致的任務重跑非常複雜;

任務量比較多後,排程效能較差,有些任務調起延遲較大;

與一站式大資料開發平臺整合二開成本比較高;

原生不支援多租戶。

04 Apache DolphinScheduler改造與 Airflow任務遷移

以上幾個比較重要的挑戰,促使我們重新進行排程選型。經過對比分析後,我們選擇了 Apache DolphinScheduler。

對於分析師來說,資料依賴是一個好理解的概念,但任務依賴就比較讓人費解。

比較理想的方案是對分析師展示的是資料依賴,底層實現是任務依賴,並且這資料依賴是自動生產的,不需要分析師手動輸入依賴表。

做到這一點,首先需要解決一個問題,如何根據一段 SQL,判斷出這段 SQL 的輸入輸出表?


由於是在 Hive 的環境中,所以需要看下 Hive sql 的解析過程。

如上圖所示hive利用antlr 進行語法和語義解析,生成抽象語法樹。舉例,如下一段 sql 語句:

解析成的語法樹:

遍歷這棵抽象語法樹就可以準確獲得輸入輸出,我們發現並不需要從頭來做,Hive 147 中就實現了這個功能。

https://issues.apache.org/jira/browse/HIVE-147

我們解析了輸入輸出之後,就可以把輸入輸出表和對應的 Apache DolphinScheduler排程任務關聯起來,這樣就完成了對分析師看到的是資料依賴,底層實現是任務依賴。當然這種實現就會讓每個任務都很小,大部分任務都是隻最終產出一張表,排程數量會比較多,但目前來看,沒有帶來效能問題。

這之後就是面臨的如何把Airflow中的任務平滑的遷移到 Apache DolphinScheduler 中,Airflow的任務都是一個個Python檔案,Airflow 的排程器不停地掃描Pyhton檔案所在檔案目錄,生成排程任務。核心實現類就是上圖中的 DagFileProcessorManager,我們就可以參考這個類的實現來解析Python任務,生成Apache DolphinScheduler 任務定義需要的 Json 串,從而完成排程任務的遷移。

最後是做個廣告,我們是自如大資料基礎平臺,負責大資料的部署、 運維、 監控、優化、二開,並且在此之上構建一站式的大資料開發平臺,歡迎加入我們。

我的分享就到這裡,感謝大家!

05 特別感謝
聯合主辦方

Apache ShenYu(Incubating)

合作方

示說網、開源中國、CSDN、稀土掘金、開源社、SeaTunnel 社群、思否 和 ALC 北京

禮品贊助

YY 直播

Apache ShenYu(Incubating)

感謝主持人,低程式碼無程式碼平臺 Treelab 張德通,以及活動志願者 曹海洋 對本場活動的大力支援!

參與貢獻
隨著國內開源的迅猛崛起,Apache DolphinScheduler 社群迎來蓬勃發展,為了做更好用、易用的排程,真誠歡迎熱愛開源的夥伴加入到開源社群中來,為中國開源崛起獻上一份自己的力量,讓本土開源走向全球。

參與 DolphinScheduler 社群有非常多的參與貢獻的方式,包括:

貢獻第一個PR(文件、程式碼) 我們也希望是簡單的,第一個PR用於熟悉提交的流程和社群協作以及感受社群的友好度。

社群彙總了以下適合新手的問題列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手問題列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A"volunteer+wanted"

如何參與貢獻連結:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html

來吧,DolphinScheduler開源社群需要您的參與,為中國開源崛起添磚加瓦吧,哪怕只是小小的一塊瓦,匯聚起來的力量也是巨大的。

參與開源可以近距離與各路高手切磋,迅速提升自己的技能,如果您想參與貢獻,我們有個貢獻者種子孵化群,可以新增社群小助手微信(Leonard-ds) ,手把手教會您( 貢獻者不分水平高低,有問必答,關鍵是有一顆願意貢獻的心 )。

新增小助手微信時請說明想參與貢獻。

來吧,開源社群非常期待您的參與。