跳到主要内容

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;