本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Apache HudiUpsert
是指將記錄插入現有資料集 (如果記錄尚不存在),或者更新記錄 (如果記錄存在) 的能力。
Hudi 處理資料插入和更新事件,而不會建立許多可能會導致分析效能問題的小型檔案。Apache Hudi 會自動追蹤變更和合併檔案,以便檔案保持在最佳的大小。如此可避免建置自訂解決方案,這些解決方案用來監控許多小型檔案並將其重新寫入較少的大型檔案。
Hudi 資料集適用於以下使用案例:
會使用開放儲存格式將 Hudi 管理的資料集存放在 Amazon S3 中。目前,Athena 可以讀取經壓縮的 Hudi 資料集,但不能寫入 Hudi 資料。Athena 支援 Hudi 0.14.0 版搭配 Athena 引擎第 3 版。可能會變動。Athena 無法保證與使用較新版本 Hudi 建立之資料表的讀取相容性。如需有關 Athena 引擎版本控制的資訊,請參閱Athena 引擎版本控制。如需有關 Hudi 功能和版本控制的詳細資訊,請參閱 Apache 網站上的 Hudi 文件
Hudi 資料集可以是以下類型之一:
-
寫入時複製 (CoW) – 資料會以單欄式格式 (Parquet) 存放,每次更新都會在寫入期間建立新版本的檔案。
-
讀取時合併 (MoR) – 資料的存放是使用單欄式 (Parquet) 和以資料行為基礎 (Avro) 格式的組合。更新會記錄到以資料行為基礎的
delta
檔案,並視需要壓縮以建立新版本的單欄式檔案。
使用 CoW 資料集,每次有記錄進行更新時,包含記錄的檔案就會以更新的值重寫。若使用 MoR 資料集,每次有更新時,Hudi 只會寫入已變更之記錄的資料行。MoR 更適合較少讀取,而寫入或變更較繁重的工作負載。CoW 更適合資料變更較不頻繁,而讀取作業較為繁重的工作負載。
Hudi 提供三個可用於資料存取的查詢類型:
-
快照查詢 – 查詢會查看截至給定遞交或壓縮動作的資料表的最新快照。對於 MoR 資料表,快照查詢會公開資料表的最新狀態,方法是合併查詢時最新檔案切片的基底和 delta 檔案。
-
增量查詢 – 查詢只會看到自給定的遞交/壓縮以來在資料表中寫入的新資料。這會有效地提供變更串流,以啟用增量資料管道。
-
讀取最佳化查詢 – 對於 MoR 資料表,查詢會看到壓縮的最新資料。對於 CoW 資料表,查詢會看到遞交的最新資料。
下表顯示每個資料表類型可能的 Hudi 查詢類型。
資料表類型 | 可能的 Hudi 查詢類型 |
---|---|
寫入時複製 | 快照、增量 |
讀取時合併 | 快照、增量、讀取最佳化 |
目前,Athena 支援快照查詢和讀取最佳化查詢,但不支援增量查詢。在 MoR 資料表上,所有公開給讀取最佳化查詢的資料均經過壓縮。這可提供良好的效能,但不包含最新的 delta 遞交。快照查詢包含最新資料,但會產生一些運算開銷,這使得這些查詢的效能較為不佳。
如需有關資料表和查詢類型之間取捨的詳細資訊,請參閱 Apache Hudi 文件中的資料表和查詢類型
Hudi 術語變更:檢視現在是查詢
從 Apache Hudi 0.5.1 版開始,先前稱為檢視的內容現在稱為查詢。下表摘要列出新舊術語之間的變更。
舊術語 | 新術語 |
---|---|
CoW:讀取最佳化檢視 MoR:即時檢視 |
快照查詢 |
增量檢視 | 增量查詢 |
MoR 讀取最佳化檢視 | 讀取最佳化查詢 |