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.metadata-table-enabled

从 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)