Hudi Catalog

最近更新时间:2023-10-23 10:46:11

我的收藏
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;