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

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

Delta Lake Catalog - 图1备注

这是一个实验功能。

使用须知

  1. 在使用 Trino Catalog 访问 Delta Lake 表之前,必须先编译 Trino 的 Delta Lake 插件,并将其放在指定目录下。具体操作步骤参考下文。
  2. 当前 Doris 适配 Trino 435 版本的插件,如果使用低于或高于 435 版本的 Trino 插件,可能会出现兼容性问题。
  3. 当前不支持 Delta Lake 的 Time Travel 功能。
  4. 当前不支持查询 Delta Lake 的 history 信息。

编译 Delta Lake 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-delta-lake
  5. $ mvn clean install -DskipTest

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

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

部署 Delta Lake Connector

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

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

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

创建 Delta Lake Catalog

  1. create catalog delta_lake_catalog properties (
  2. "type"="trino-connector",
  3. "trino.connector.name"="delta_lake",
  4. "trino.hive.metastore"="thrift",
  5. "trino.hive.metastore.uri"= "thrift://ip:portrait ",
  6. "trino.hive.config.resources"="/path/to/core-site.xml,/path/to/hdfs-site.xml"
  7. );

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

列类型映射

Delta LakeTrinoDoris
BOOLEANBOOLEANBOOLEAN
INTEGERINTEGERINT
BYTETINYINTTINYINT
SHORTSMALLINTSMALLINT
LONGBIGINTBIGINT
FLOATREALFLOAT
DOUBLEDOUBLEDOUBLE
DECIMAL(p,s)DECIMAL(p,s)DECIMAL(p,s)
STRINGVARCHARSTRING
BINARYVARBINARYSTRING
DATEDATEDATE
TIMESTAMPNTZ (TIMESTAMP_NTZ)TIMESTAMP(6)DATETIME
TIMESTAMPTIMESTAMP(3) WITH TIME ZONEDATETIME
ARRAYARRAYARRAY
MAPMAPMAP
STRUCTROWSTRUCT