跳到主要内容

Kudu Catalog

概述

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

备注
  • 该功能为实验功能,自 3.0.1 版本开始支持。
备注
  • 该功能不依赖 Trino 集群环境,仅使用 Trino 兼容插件。

适用场景

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

版本兼容性

  • Doris 版本:3.0.1 及以上
  • Trino Connector 版本:435
  • Kudu 版本:具体支持的版本请参考 Trino 文档

快速开始

步骤 1:准备 Connector 插件

你可以选择以下两种方式之一来获取 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/ 目录。

步骤 2:部署插件

  1. trino-kudu-435/ 目录放到所有 FE 和 BE 部署路径的 connectors/ 目录下(如果没有该目录,请手动创建):

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

    也可以通过修改 fe.conftrino_connector_plugin_dir 配置自定义插件路径。如:trino_connector_plugin_dir=/path/to/connectors/

  2. 重启所有 FE 和 BE 节点,以确保 Connector 被正确加载。

步骤 3:创建 Catalog

基础配置(无认证)

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'
);

Kerberos 认证配置

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' = 'KERBEROS',
'trino.kudu.authentication.client.principal' = 'user@DOMAIN.COM',
'trino.kudu.authentication.client.keytab' = '/path/to/kudu.keytab',
'trino.kudu.authentication.config' = '/etc/krb5.conf',
'trino.kudu.authentication.server.principal.primary' = 'kudu'
);

步骤 4:查询数据

创建 Catalog 后,可以通过以下三种方式查询 Kudu 表数据:

-- 方式 1:切换到 Catalog 后查询
SWITCH kudu_catalog;
USE kudu_db;
SELECT * FROM kudu_tbl LIMIT 10;

-- 方式 2:使用两级路径
USE kudu_catalog.kudu_db;
SELECT * FROM kudu_tbl LIMIT 10;

-- 方式 3:使用全限定名
SELECT * FROM kudu_catalog.kudu_db.kudu_tbl LIMIT 10;

配置说明

Catalog 配置参数

创建 Kudu Catalog 的基本语法如下:

CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'trino-connector', -- 必填,固定值
'trino.connector.name' = 'kudu', -- 必填,固定值
{TrinoProperties}, -- Trino Connector 相关属性
{CommonProperties} -- 通用属性
);

TrinoProperties 参数

TrinoProperties 用于配置 Trino Kudu Connector 的专有属性,这些属性以 trino. 为前缀。常用参数包括:

参数名称必填默认值说明
trino.kudu.client.master-addresses-Kudu Master 节点地址列表
trino.kudu.authentication.typeNONE认证类型:NONE 或 KERBEROS
trino.kudu.authentication.client.principal-Kerberos 客户端 principal
trino.kudu.authentication.client.keytab-Kerberos keytab 文件路径
trino.kudu.authentication.config-Kerberos 配置文件路径
trino.kudu.authentication.server.principal.primary-Kudu 服务端 principal 前缀

更多 Kudu Connector 配置参数请参考 Trino 官方文档

CommonProperties 参数

CommonProperties 用于配置 Catalog 的通用属性,例如元数据刷新策略、权限控制等。详细说明请参阅数据目录概述中「通用属性」部分。

数据类型映射

在使用 Kudu Catalog 时,数据类型会按照以下规则进行映射:

Kudu TypeTrino TypeDoris Type说明
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-不支持的类型
提示

对于 binary 类型,如果需要以十六进制格式显示,请使用 HEX() 函数包裹列名,例如:SELECT HEX(binary_col) FROM table