

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 查詢 Apache Hudi 資料集
<a name="querying-hudi"></a>

[https://hudi.incubator.apache.org/](https://hudi.incubator.apache.org/) 是一個開源資料管理架構，可簡化增量資料的處理。記錄級的插入、更新、更新插入和刪除動作會得到更細微的處理，從而減少開銷。`Upsert` 是指將記錄插入現有資料集 (如果記錄尚不存在)，或者更新記錄 (如果記錄存在) 的能力。

Hudi 處理資料插入和更新事件，而不會建立許多可能會導致分析效能問題的小型檔案。Apache Hudi 會自動追蹤變更和合併檔案，以便檔案保持在最佳的大小。如此可避免建置自訂解決方案，這些解決方案用來監控許多小型檔案並將其重新寫入較少的大型檔案。

Hudi 資料集適用於以下使用案例：
+ 遵守隱私權規定，例如[一般資料保護規範](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) (歐盟《一般資料保護規範》(GDPR)) 及[加州消費者隱私法](https://en.wikipedia.org/wiki/California_Consumer_Privacy_Act) (CCPA)，這些法規會強制執行使用者移除個人資訊或變更其資料使用方式的權利。
+ 處理來自感應器和其他物聯網 (IoT) 裝置的串流資料，這些資料需要特定的資料插入和更新事件。
+ 實作[變更資料擷取 (CDC) 系統](https://en.wikipedia.org/wiki/Change_data_capture)。

Hudi 資料集可以是以下類型之一：
+ **寫入時複製 (CoW)** – 資料會以單欄式格式 (Parquet) 存放，每次更新都會在寫入期間建立新版本的檔案。
+ **讀取時合併 (MoR)** – 資料的存放是使用單欄式 (Parquet) 和以資料行為基礎 (Avro) 格式的組合。更新會記錄到以資料行為基礎的 `delta` 檔案，並視需要壓縮以建立新版本的單欄式檔案。

使用 CoW 資料集，每次有記錄進行更新時，包含記錄的檔案就會以更新的值重寫。若使用 MoR 資料集，每次有更新時，Hudi 只會寫入已變更之記錄的資料行。MoR 更適合較少讀取，而寫入或變更較繁重的工作負載。CoW 更適合資料變更較不頻繁，而讀取作業較為繁重的工作負載。

Hudi 提供三個可用於資料存取的查詢類型：
+ **快照查詢** – 查詢會查看截至給定遞交或壓縮動作的資料表的最新快照。對於 MoR 資料表，快照查詢會公開資料表的最新狀態，方法是合併查詢時最新檔案切片的基底和 delta 檔案。
+ **增量查詢** – 查詢只會看到自給定的遞交/壓縮以來在資料表中寫入的新資料。這會有效地提供變更串流，以啟用增量資料管道。
+ **讀取最佳化查詢** – 對於 MoR 資料表，查詢會看到壓縮的最新資料。對於 CoW 資料表，查詢會看到遞交的最新資料。

下表顯示每個資料表類型可能的 Hudi 查詢類型。


| 資料表類型 | 可能的 Hudi 查詢類型 | 
| --- | --- | 
| 寫入時複製 | 快照、增量 | 
| 讀取時合併 | 快照、增量、讀取最佳化 | 

如需有關資料表和查詢類型之間取捨的詳細資訊，請參閱 Apache Hudi 文件中的[資料表和查詢類型](https://hudi.apache.org/docs/table_types/)。

## Hudi 術語變更：檢視現在是查詢
<a name="querying-hudi-hudi-dataset-table-types-terminology"></a>

從 Apache Hudi 0.5.1 版本開始，以前的檢視現在稱為稱為查詢。下表摘要列出新舊術語之間的變更。


| 舊術語 | 新術語 | 
| --- | --- | 
| CoW：讀取最佳化檢視<br />MoR：即時檢視 | 快照查詢 | 
| 增量檢視 | 增量查詢 | 
| MoR 讀取最佳化檢視 | 讀取最佳化查詢 | 

**Topics**
+ [Hudi 術語變更：檢視現在是查詢](#querying-hudi-hudi-dataset-table-types-terminology)
+ [考量和限制](querying-hudi-in-athena-considerations-and-limitations.md)
+ [寫入時複製 (CoW) 建立資料表範例](querying-hudi-copy-on-write-create-table-examples.md)
+ [讀取時合併 (MoR) 建立資料表範例](querying-hudi-merge-on-read-create-table-examples.md)
+ [使用 Hudi 中繼資料以提升效能](querying-hudi-metadata-table.md)
+ [其他資源](querying-hudi-additional-resources.md)