Mutil Catalog Hudi 提供了 Doris 直接访问 Hudi 外部表的能力,外部表省去了繁琐的数据导入工作,并借助 Doris 本身的 OLAP 的能力来解决 Hudi 表的数据分析问题:
1、支持 Hudi 数据源接入Doris。
2、支持 Doris 与 Hudi 数据源中的表联合查询,进行更加复杂的分析操作。
本文档主要介绍该功能的使用方式和注意事项等。
说明:
该功能适用于 Doris 1.2及后续版本。
Hudi 目前仅支持 Copy On Write 表的 Snapshot Query,以及 Merge On Read 表的 Read Optimized Query。
创建方法
数据在 HDFS 上:
CREATE CATALOG hudi PROPERTIES ('type'='hms','hive.metastore.uris' = 'thrift://172.21.xxx:7004','hadoop.username' = 'hadoop','dfs.nameservices'='your-nameservice','dfs.ha.namenodes.your-nameservice'='nn1,nn2','dfs.namenode.rpc-address.your-nameservice.nn1'='172.21.xxx:4007','dfs.namenode.rpc-address.your-nameservice.nn2'='172.21.xxx:4007','dfs.client.failover.proxy.provider.your-nameservice'='org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider');
数据在 COS 上:
CREATE CATALOG `hudi_cos` PROPERTIES ("AWS_ENDPOINT" = "cos.ap-guangzhou.myqcloud.com","AWS_REGION" = "ap-guangzhou","hive.metastore.uris" = "thrift://172.16.xxxx:7004","type" = "hms","AWS_SECRET_KEY" = "Wu9ByN6g4D8seHj0770jJxxxx","AWS_ACCESS_KEY" = "AKIDaWJcCi9Rc4TqjV9hYHn9NRxxxxx");
类型匹配
支持的 Hudi 列类型与 Doris 对应关系如下表:
HMS Type | Doris Type | Comment |
boolean | boolean | - |
tinyint | tinyint | - |
smallint | smallint | - |
int | int | - |
bigint | bigint | - |
date | date | - |
timestamp | datetime | - |
float | float | - |
double | double | - |
char | char | - |
varchar | varchar | - |
decimal | decimal | - |
array<type> | array<type> | 支持 array 嵌套,如 array<array<int>> |
map<KeyType, ValueType> | map<KeyType, ValueType> | 暂不支持嵌套,KeyType 和 ValueType 需要为基础类型 |
struct<col1: Type1, col2: Type2, ...> | struct<col1: Type1, col2: Type2, ...> | 暂不支持嵌套,Type1, Type2, ... 需要为基础类型 |
other | unsupported | - |
查询用法
与普通的 Doris OLAP 表并无区别
select * from hudi_catalog_name.database_name.table_name;