

# 查询 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 表，快照查询通过在查询时合并最新文件切片的基本文件和增量文件来显示表的最新状态。
+ **增量查询** – 查询只能看到自给定提交/压缩以来，写入表的新数据。这有效地提供了更改流以启用增量数据管道。
+ **读取优化查询** – 对于 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：读取优化视图 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)