數(shù)據(jù)開發(fā)提效有秘訣!離線開發(fā)BatchWorks 六大典型場景拆解
回顧大數(shù)據(jù)的發(fā)展歷程,一句話概括就是海量數(shù)據(jù)的高效處理。在當(dāng)今快節(jié)奏、不斷變化的市場環(huán)境下,優(yōu)秀的開發(fā)效率已經(jīng)成為企業(yè)數(shù)字化轉(zhuǎn)型的必備條件。
數(shù)棧離線開發(fā)BatchWorks?是一款專注離線數(shù)據(jù)ELT開發(fā)的產(chǎn)品,采用先進(jìn)的大數(shù)據(jù)生態(tài)底層技術(shù),具備高性能且功能豐富的大數(shù)據(jù)處理能力,對大數(shù)據(jù)離線計算、數(shù)據(jù)倉庫建設(shè)提供有效支撐,是企業(yè)建設(shè)數(shù)據(jù)中臺、數(shù)據(jù)倉庫,加速數(shù)字化轉(zhuǎn)型的基礎(chǔ)設(shè)施。
BatchWorks?經(jīng)過6年多的打磨已經(jīng)服務(wù)于包括金融、教育、政企、零售等多個行業(yè)在內(nèi)的300+客戶,在開發(fā)效率提升方面發(fā)揮了巨大的價值。本文將從多個項(xiàng)目實(shí)施過程中遇到的6個典型場景來介紹一下離線開發(fā)BatchWorks 在開發(fā)效率提升上的一些解決方案,與大家共同探討。
場景一:大批量數(shù)據(jù)快速遷移
問:客戶數(shù)倉計劃從 Oracle 遷移到 Hadoop,初始化需要完成幾萬張表的數(shù)據(jù)同步,如何快速進(jìn)行大批量 hive 表的創(chuàng)建并做數(shù)據(jù)抽取?
答:BatchWorks 支持連接數(shù)據(jù)源進(jìn)行關(guān)系型數(shù)據(jù)庫到包括 Hive 在內(nèi)的多目標(biāo)數(shù)據(jù)庫之間的整庫同步,可一次性完成大批量表的自動創(chuàng)建和同步任務(wù)的生成,支持按日期增量和全量兩種數(shù)據(jù)同步方式??紤]到同一時間點(diǎn)啟動大量數(shù)據(jù)同步任務(wù)會造成數(shù)據(jù)庫壓力過大,還可支持任務(wù)并發(fā)數(shù)的配置。

場景二:SQL 邏輯的復(fù)用和批量管理
問:一條業(yè)務(wù)線上有20+產(chǎn)品,每個產(chǎn)品的數(shù)據(jù)分析由一個 SQL 任務(wù)完成,所有產(chǎn)品的任務(wù)邏輯完全一致且需要保持變更同步,而實(shí)際業(yè)務(wù)在快速變化,數(shù)據(jù)開發(fā)每次調(diào)整業(yè)務(wù)邏輯都需要每個 SQL 任務(wù)分別手動變更,經(jīng)常出現(xiàn)調(diào)整錯漏的情況,如何解決?
答:增加“組件”功能,用戶可把在大量任務(wù)中通用的業(yè)務(wù) SQL 邏輯抽象出來作為組件進(jìn)行維護(hù),不同的產(chǎn)品只需引用組件并配置輸入輸出表和字符參數(shù),即可快速完成任務(wù)配置。當(dāng)業(yè)務(wù)變更時只要調(diào)整組件的邏輯就能實(shí)現(xiàn)所有引用此組件任務(wù)的同步變更。
一個簡單例子:業(yè)務(wù)方需要對不同產(chǎn)品的用戶群體做年齡分層,可創(chuàng)建組件做年齡篩選,配置以下輸入輸出參數(shù):
? 輸入?yún)?shù):數(shù)據(jù)來源表
? 輸出參數(shù):年齡層中的最大最小值(字符串)、數(shù)據(jù)輸出表

實(shí)現(xiàn)從產(chǎn)品1中篩選出年齡為20-30的用戶數(shù)據(jù),在創(chuàng)建任務(wù)時選擇上述組件配置年齡輸入?yún)?shù)和數(shù)據(jù)來源表,并指定寫入的結(jié)果表:

場景三:計算結(jié)果跨任務(wù)復(fù)用
問:任務(wù)存在上下游依賴時,下游任務(wù)可能需要直接使用上游部分任務(wù)的計算結(jié)果,同時用戶不希望建太多臨時表,或產(chǎn)生一些額外的重復(fù)計算,如何解決?
答:BatchWorks 支持了任務(wù)上下游參數(shù)傳遞功能,上游任務(wù)的計算結(jié)果可進(jìn)行周期性存儲,直接被下游計算引用。
一個簡單例子:從業(yè)務(wù)庫完成銷售明細(xì)表數(shù)據(jù)采集清洗,按天匯總后將銷售金額最高的門店數(shù)據(jù)輸出 sales_1d 任務(wù),從 sales_details 中通過輸入?yún)?shù)獲取日期數(shù)據(jù),然后將當(dāng)天最高銷售數(shù)據(jù)對應(yīng)的門店通過輸出參數(shù)輸出傳遞至下游的同步任務(wù),同步任務(wù)篩選此門店數(shù)據(jù)同步至 oceanbase。


場景四:任務(wù)依賴自動解析
問:當(dāng)任務(wù)較多且依賴關(guān)系復(fù)雜時,依賴關(guān)系的配置會占用一定的工作量,尤其在對任務(wù)做了修改后,依賴關(guān)系可能會有更新不及時/漏更新的情況,發(fā)現(xiàn)問題時往往已經(jīng)到了下游環(huán)節(jié),如何解決?
答:BatchWorks 支持了上游任務(wù)依賴自動解析推薦/自動依賴功能,選擇此功能進(jìn)行依賴任務(wù)配置時,平臺將對當(dāng)前任務(wù)進(jìn)行 SQL 解析,得到來源表和結(jié)果表,并尋找來源表的產(chǎn)出任務(wù),用戶可從這些推薦任務(wù)里選擇全部或部分任務(wù)添加到上游依賴,也可直接選擇自動依賴,當(dāng) SQL 調(diào)整時自動進(jìn)行上游依賴的更新。

場景五:任務(wù)異??焖倥挪?/h1>
問:離線實(shí)例的運(yùn)行流程涉及實(shí)例上游依賴檢查、到達(dá)計劃時間檢查、資源檢查、質(zhì)量校驗(yàn)等多個環(huán)節(jié),運(yùn)行過程出現(xiàn)異常時僅通過日志難以直觀地進(jìn)行問題溯源,問題處理不及時直接影響下游業(yè)務(wù),如何解決?
答:BatchWorks 支持實(shí)例診斷功能對實(shí)例的運(yùn)行過程進(jìn)行分析,將實(shí)例調(diào)度流程及每個流程當(dāng)前的狀態(tài)、節(jié)點(diǎn)時間全部展示,用戶可直觀地看到當(dāng)前實(shí)例的運(yùn)行階段和異常原因。
比如在進(jìn)行上游依賴異常檢查時,BatchWorks 將構(gòu)建以當(dāng)前實(shí)例為末位節(jié)點(diǎn)的異常依賴樹,尋找直接導(dǎo)致其未運(yùn)行的根源任務(wù)組,快速直達(dá)阻塞點(diǎn)。此外針對 SparkSQL,可監(jiān)控其指標(biāo)健康狀況并給出調(diào)參建議,針對 HiveSQL 可觀測運(yùn)行過程中資源使用變化情況,從而可進(jìn)一步進(jìn)行任務(wù)調(diào)優(yōu)。


場景六:以用戶組為單位的用戶管理
問:某公司的數(shù)據(jù)開發(fā)團(tuán)隊不定期會有一些人員調(diào)整,因業(yè)務(wù)量大、開發(fā)項(xiàng)目比較多,人員調(diào)整后開發(fā)平臺上的維護(hù)十分繁瑣。例如有新員工入職,需要將其添加到相關(guān)的多個開發(fā)項(xiàng)目中并賦予不同的角色,任務(wù)告警值班時需要添加進(jìn)對應(yīng)的告警規(guī)則中等等,增加管理員的用戶管理成本且容易缺漏,如何解決?
答:BatchWorks 的用戶中心支持以用戶組為單位的用戶管理,每個用戶可被添加進(jìn)一個或多個用戶組。項(xiàng)目添加用戶、告警圈選用戶時均可以用戶組的方式進(jìn)行配置。后續(xù)增刪用戶時僅需在用戶中心的用戶組內(nèi)進(jìn)行操作,即可完成人員->項(xiàng)目/角色等的快速調(diào)整。

《數(shù)據(jù)治理行業(yè)實(shí)踐白皮書》下載地址:https://fs80.cn/l134d5?
想了解或咨詢更多有關(guān)袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbzhan
同時,歡迎對大數(shù)據(jù)開源項(xiàng)目有興趣的同學(xué)加入「袋鼠云開源框架釘釘技術(shù) qun」,交流最新開源技術(shù)信息,qun 號碼:30537511,項(xiàng)目地址:https://github.com/DTStack