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

该功能自 Doris 3.0.1 版本开始支持。

Kudu Catalog - 图1备注

这是一个实验功能。

使用须知

  1. 在使用 Trino Catalog 访问 Kudu 表之前,必须先编译 Trino 的 Kudu 插件,并将其放在指定目录下,具体操作步骤参考下文
  2. 当前 Doris 适配 Trino 435 版本的插件,如果使用低于或高于 435 版本的 Trino 插件,可能会出现兼容性问题。
  3. 由于 Trino 435 版本的 Kudu 插件不支持 DATE 类型,所以建议使用我们提供的 Kudu 插件。

编译 Kudu Connector 插件

需要 JDK 17 版本。

  1. $ git clone https://github.com/apache/Doris-thirdparty.git
  2. $ cd Doris-thirdparty
  3. $ git checkout trino-435
  4. $ cd plugin/trino-kudu
  5. $ 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/ 目录下。(如果没有,可以手动创建)。

  1. ├── bin
  2. ├── conf
  3. ├── connectors
  4. ├── trino-kudu-435
  5. ...

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

创建 Kudu Catalog

  1. create catalog kudu_catalog properties (
  2. "type"="trino-connector",
  3. "trino.connector.name"="kudu",
  4. "trino.kudu.client.master-addresses"="ip1:port1,ip2:port2,ip3,port3",
  5. "trino.kudu.authentication.type" = "NONE"
  6. );

其中:以 trino. 为前缀的属性都是 trino 原生的属性,更多有关 Kudu 的属性可以参考 Trino 文档

列类型映射

KuduTrinoDoris说明
BOOLEANBOOLEANBOOLEAN
INT8TINYINTTINYINT
INT16SMALLINTSMALLINT
INT32INTEGERINT
INT64BIGINTBIGINT
FLOATREALFLOAT
DOUBLEDOUBLEDOUBLE
BINARYVARBINARYSTRING需要 HEX(col) 才会显示的和 Trino 一样
STRINGVARCHARSTRING
DECIMAL(p,s)DECIMAL(p,s)DECIMAL(p,s)
DATEDATEDATE
UNIXTIME_MICROSTIMESTAMP(3)DATETIME(3)
VARCHARUNSUPPORTED
UTF-8 encoded stringUNSUPPORTED