跳到主要内容
版本:4.x

Kudu Catalog

Kudu Catalog 通过 Trino Connector 兼容框架,使用 Trino Kudu Connector 来访问 Kudu 表。

备注

该功能为实验功能,自 3.0.1 版本开始支持。

适用场景​

场景说明
数据集成读取 Kudu 数据并写入到 Doris 内表。
数据写回不支持。

环境准备​

编译 Kudu Connector 插件​

需要 JDK 17 版本。

$ git clone https://github.com/apache/doris-thirdparty.git
$ cd doris-thirdparty
$ git checkout trino-435
$ cd plugin/trino-kudu
$ mvn clean package -Dmaven.test.skip=true

完成编译后,会在 trino/plugin/trino-kudu/target/ 下得到 trino-kudu-435/ 目录。

也可以直接下载预编译的 trino-kudu-435-20240724.tar.gz 并解压。

部署 Kudu Connector​

将 trino-kudu-435/ 目录放到所有 FE 和 BE 部署路径的 connectors/ 目录下。(如果没有,可以手动创建)。

├── bin
├── conf
├── connectors
│ ├── trino-kudu-435
...

部署完成后,建议重启 FE、BE 节点以确保 Connector 可以被正确加载。

配置 Catalog​

语法​

CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'trino-connector', -- required
'trino.connector.name' = 'kudu', -- required
{TrinoProperties},
{CommonProperties}
);
  • {TrinoProperties}

    TrinoProperties 部分用于填写将传递给 Trino Connector 的属性,这些属性以trino.为前缀。理论上,Trino 支持的属性这里都支持,更多有关 Kudu 的属性可以参考 Trino 文档。

  • [CommonProperties]

    CommonProperties 部分用于填写通用属性。请参阅 数据目录概述 中【通用属性】部分。

支持的 Kudu 版本​

更多有关 Kudu 的信息可以参考 Trino 文档。

支持的元数据服务​

更多有关 Kudu 的信息可以参考 Trino 文档。

支持的存储系统​

更多有关 Kudu 的信息可以参考 Trino 文档。

列类型映射​

Kudu TypeTrino TypeDoris TypeComment
booleanbooleanboolean
int8tinyinttinyint
int16smallintsmallint
int32integerint
int64bigintbigint
floatrealfloat
doubledoubledouble
decimal(P, S)decimal(P, S)decimal(P, S)
binaryvarbinarystring需要适用 HEX(col) 删除查询,才能返回和 Trino 一样的显示结果。
stringvarcharstring
datedatedate
unixtime_microstimestamp(3)datetime(3)
otherUNSUPPORTED

基础示例​

CREATE CATALOG kudu_catalog PROPERTIES (  
'type' = 'trino-connector',
'trino.connector.name' = 'kudu',
'trino.kudu.client.master-addresses' = 'ip1:port1,ip2:port2,ip3,port3',
'trino.kudu.authentication.type' = 'NONE'
);

查询操作​

配置好 Catalog 后,可以通过以下方式查询 Catalog 中的表数据:

-- 1. switch to catalog, use database and query
SWITCH kudu_ctl;
USE kudu_db;
SELECT * FROM kudu_tbl LIMIT 10;

-- 2. use kudu database directly
USE kudu_ctl.kudu_db;
SELECT * FROM kudu_tbl LIMIT 10;

-- 3. use full qualified name to query
SELECT * FROM kudu_ctl.kudu_db.kudu_tbl LIMIT 10;