Google宣布Dataproc服務將開始支援表格格式,用戶已經可以在最新的Dataproc 1.5預覽版,使用Delta Lake以及Apache Iceberg專案,將資料儲存成表格,另外,在Dataproc 1.3也開始支援Apache Hudi,可對資料進行漸增處理,在紀錄層級(Record-Level)執行插入、更新和刪除動作。

Google提到,由於Hadoop分散式檔案系統(Hadoop Distributed File System,HDFS)以及物件儲存,都被設計成檔案系統,而非用來支援交易,因此在分散式處理環境要實作交易功能並不容易,因為開發者需要考量對儲存系統進行鎖定存取,但是這樣又會影響整體系統的資料吞吐量。

但ACID交易功能又對業務營運非常重要,資料倉儲中,用戶通常需要以常用的資料來產生報表,但其他應用程式或是使用者,可能又同時需要讀寫相同的資料表格。

Apache Iceberg或是Delta Lake等專案便是要來解決這樣的問題,透過在表格格式中加入交易語意以及規則,滿足特定應用對ACID交易的需求。另外,表格格式的好處便是能方便地進行資料版本控制,提供用戶歷史資料快照,用戶可以查詢資料的歷史紀錄,或是快速地將資料回退到特定歷史版本,而且當資料發生錯誤時,除錯也會更加容易。

由於大資料平臺底層的儲存系統將資料分為檔案或是物件,這些檔案能以特定結構或是協定表示成資料表格,當這些資料表格大於單一檔案的限制時,便需要拆分成多個檔案,而組織這些檔案成為一個表格的方法就是表格格式。除了Google雲端平臺自己提供的表格功能之外,用戶現在也可以在Dataproc中使用開源專案Delta Lake以及Apache Iceberg。

Delta Lake是一個儲存層,主要是要為Apache Spark提供類似關聯式資料庫管理系統的功能,像是ACID交易功能、時間旅行(Time Travel)、架構評估,同時也提供刪除、更新以及插入資料等操作。Delta Lake將檔案儲存成Apache Parquet開放格式,並在儲存系統維護一個檔案儲存表格的元資料,使用交易日誌機制來控制來源的真實性與交易原子性。

而還在孵化器階段的Apache Iceberg,則是一個專門用在大量分析資料集上的開源表格格式,用戶可以在Presto和Spark中加入表格,以類似SQL表格的方式進行操作,另外,Iceberg提供隱藏分區功能,可透過定義分區欄位以及實際分區之間的關係,抽象化表格的分區,因此當表格分區改變時,使用者查詢的方式也不需要改變。

另外,Dataproc 1.3也開始支援Apache Hudi,讓用戶以紀錄層級,進行資料插入、更新和刪除,滿足要對個別紀錄進行增量更新等使用情境,也能建立資料集和資料表,並管理底層的資料格式,Apache Hudi儲存格式使用Apache Parquet和Apache Avro。


Advertisement

更多 iThome相關內容