Kudu Catalog 通过 Trino Connector 兼容框架,使用 Kudu Connector 来访问 Kudu 表。
该功能自 Doris 3.0.1 版本开始支持。
备注
这是一个实验功能。
使用须知
- 在使用 Trino Catalog 访问 Kudu 表之前,必须先编译 Trino 的 Kudu 插件,并将其放在指定目录下,具体操作步骤参考下文
- 当前 Doris 适配 Trino 435 版本的插件,如果使用低于或高于 435 版本的 Trino 插件,可能会出现兼容性问题。
- 由于 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 文档。
列类型映射
| Kudu | Trino | Doris | 说明 |
|---|---|---|---|
| BOOLEAN | BOOLEAN | BOOLEAN | |
| INT8 | TINYINT | TINYINT | |
| INT16 | SMALLINT | SMALLINT | |
| INT32 | INTEGER | INT | |
| INT64 | BIGINT | BIGINT | |
| FLOAT | REAL | FLOAT | |
| DOUBLE | DOUBLE | DOUBLE | |
| BINARY | VARBINARY | STRING | 需要 HEX(col) 才会显示的和 Trino 一样 |
| STRING | VARCHAR | STRING | |
| DECIMAL(p,s) | DECIMAL(p,s) | DECIMAL(p,s) | |
| DATE | DATE | DATE | |
| UNIXTIME_MICROS | TIMESTAMP(3) | DATETIME(3) | |
| VARCHAR | UNSUPPORTED | ||
| UTF-8 encoded string | UNSUPPORTED |
