(相關資料圖)
在數據分析場景中,企業使用的數據通常具備來源多樣化的特點,如支付交易記錄、用戶行為等,且數據格式各異,有的為行式存儲結構,有的為列式存儲結構。這就要求企業數倉具備一定的數據轉換能力。
傳統方式是采用Extract-Transform-Load (ETL)來將業務數據轉換為適合數倉的數據模型,然而,這依賴于獨立于數倉外的ETL系統,導致維護成本較高。但隨著云計算時代的到來,云數據倉庫具備更強擴展性和計算能力,也要求改變傳統的ELT流程。
火山引擎ByteHouse是一款基于開源ClickHouse推出的云原生數據倉庫,為用戶提供極速分析體驗,能夠支撐實時數據分析和海量數據離線分析,同時還具備便捷的彈性擴縮容能力,極致分析性能和豐富的企業級特性。憑借其強大的計算能力,火山引擎ByteHouse目前已全面支持Extract-Load-Transform (ELT)的能力,讓用戶免于維護多套異構系統,產品易用性實現飛躍。
通過ByteHouse的ELT能力,用戶只需將數據導入,用自定義SQL語句在ByteHouse內部進行數據轉換,無需依賴獨立的ETL系統及資源。具體來說,ByteHouse主要通過以下三個能力實現ELT能力:
首先,長任務管理。ByteHouse的查詢時間為秒級,一旦查詢中出故障,系統會直接返回錯誤并重試。在ETL場景下,如果一個任務已經執行50分鐘才發生故障,重試意味著浪費了前50分鐘的資源,影響任務推進。在ByteHouse中,SQL查詢會被轉化為一系列的算子,研發團隊則通過提升算子的容錯能力,來應對長時間查詢下的系統故障問題,即當某個算子無法獲得足夠的內存時,系統允許該算子將一部分數據緩存在磁盤上,保證在資源緊張的情況下仍能夠完成工作。
其次,異步提交能力。面對大量長耗時的ETL任務時,傳統的同步執行方式需要客戶端等待服務端返回,容易出現超時問題,影響后續任務執行,而ByteHouse提供的異步提交能力,通過客戶端的間歇性輪訓來獲得用戶任務的最終狀態,由此保障任務在規定時間內完成。
最后,查詢隊列。當面臨大量離線加工請求時,系統會出現超載。ByteHouse為此提供了查詢隊列能力,允許用戶從隊列大小、總CPU占用率、總內存占用率三個維度定義一個隊列。
具體來說,當用戶向某隊列提交查詢時,ByteHouse可以通過組件監聽各個隊列中的查詢指標,如果隊列未達到上限,則會將查詢入隊,否則拒絕。除此之外,ByteHouse還會檢查隊列的資源利用率,當空閑資源高過某閾值時,自動將等待中的查詢出隊。利用查詢隊列,用戶在編排ETL任務時無需擔心底層資源過載,讓開發更加便捷。
長任務管理、異步提交和查詢隊列是火山引擎ByteHouse ELT的核心能力。未來,ByteHouse也會進一步迭代,支持轉換函數、長任務容錯、優先級隊列等更豐富ELT功能,為用戶提供更極致、更便捷的使用體驗。(作者:何雅逸)