Hudi 连接器¶
概述¶
Hudi 连接器支持查询已同步到 Hive 元存储的 Hudi 表格。连接器仅使用元存储来跟踪分区位置。它利用底层的 Hudi 文件系统和输入格式来列出数据文件。要详细了解连接器的设计,请查看 RFC-40。
需求¶
要使用 Hudi,我们需要
- Presto 协调器和工作器到分布式对象存储的网络访问。 
- 访问 Hive 元存储服务 (HMS)。 
- Presto 协调器到 HMS 的网络访问。使用 Thrift 协议的 Hive 元存储访问默认使用端口 9083。 
配置¶
Hudi 支持与 Hive 连接器相同的元存储配置属性。至少,以下连接器属性必须设置在 <presto_install_dir> /etc/catalog 目录中的 hudi.properties 文件中
connector.name=hudi
hive.metastore.uri=thrift://hms.host:9083
此外,可以根据用例设置以下会话属性。
| 属性名称 | 描述 | 默认值 | 
|---|---|---|
| 
 | 从 Hudi 的元数据表而不是存储中获取文件名和大小列表。 | false | 
SQL 支持¶
目前,连接器仅提供对已同步到 Hive 元存储的 Hudi 表格中数据的读取访问权限。一旦目录已如上所述配置,用户就可以像 Hive 表格一样查询表格。
支持的查询类型¶
| 表格类型 | 支持的查询类型 | 
|---|---|
| 写入时复制 | 快照查询 | 
| 读时合并 | 快照查询 + 读取优化查询 | 
示例查询¶
stock_ticks_cow 是我们在 Hudi 快速入门 文档中用于创建的 Hudi cow 表格。
以下是一些示例查询
USE hudi.default;
select symbol, max(ts) from stock_ticks_cow group by symbol HAVING symbol = 'GOOG';
  symbol   |        _col1         |
-----------+----------------------+
 GOOG      | 2018-08-31 10:59:00  |
(1 rows)
select dt, symbol from stock_ticks_cow where symbol = 'GOOG';
    dt      | symbol |
------------+--------+
 2018-08-31 |  GOOG  |
(1 rows)
select dt, count(*) from stock_ticks_cow group by dt;
    dt      | _col1 |
------------+--------+
 2018-08-31 |  99  |
(1 rows)