Iceberg External Table of Doris

    1. 支持 Iceberg 数据源接入Doris
    2. 支持 Doris 与 Iceberg 数据源中的表联合查询,进行更加复杂的分析操作

    本文档主要介绍该功能的使用方式和注意事项等。

    • FE:Frontend,Doris 的前端节点,负责元数据管理和请求接入
    • BE:Backend,Doris 的后端节点,负责查询执行和数据存储

    Doris 中创建 Iceberg 的外表

    可以通过以下两种方式在 Doris 中创建 Iceberg 外表。建外表时无需声明表的列定义,Doris 可以根据 Iceberg 中表的列定义自动转换。

    1. 创建一个单独的外表,用于挂载 Iceberg 表。
      具体相关语法,可以通过 查看。

      ``` — 语法 CREATE [EXTERNAL] TABLE table_name ENGINE = ICEBERG [COMMENT “comment”] PROPERTIES ( “iceberg.database” = “iceberg_db_name”, “iceberg.table” = “icberg_table_name”, “iceberg.hive.metastore.uris” = “thrift://192.168.0.1:9083”, “iceberg.catalog.type” = “HIVE_CATALOG” );

    1. 创建一个 Iceberg 数据库,用于挂载远端对应 Iceberg 数据库,同时挂载该 database 下的所有 table。
      具体相关语法,可以通过 HELP CREATE DATABASE 查看。

      iceberg_test_db 中的建表进度可以通过 HELP SHOW TABLE CREATION 查看。

    1. 创一个 Iceberg 外表

    参数说明:

    • 外表列
      • 列名要于 Iceberg 表一一对应
      • 列的顺序需要与 Iceberg 表一致
    • PROPERTIES 属性:
      • iceberg.hive.metastore.uris:Hive Metastore 服务地址
      • iceberg.database:挂载 Iceberg 对应的数据库名
      • :挂载 Iceberg 对应的表名,挂载 Iceberg database 时无需指定。
      • iceberg.catalog.type:Iceberg 中使用的 catalog 方式,默认为 HIVE_CATALOG,当前仅支持该方式,后续会支持更多的 Iceberg catalog 接入方式。

    展示表结构可以通过 HELP SHOW CREATE TABLE 查看。

    同步挂载

    当 Iceberg 表 Schema 发生变更时,可以通过 REFRESH 命令手动同步,该命令会将 Doris 中的 Iceberg 外表删除重建,具体帮助可以通过 HELP REFRESH 查看。

    支持的 Iceberg 列类型与 Doris 对应关系如下表:

    注意:

    • Iceberg 表 Schema 变更不会自动同步,需要在 Doris 中通过 命令同步 Iceberg 外表或数据库。
    • 当前默认支持的 Iceberg 版本为 0.12.0,未在其他版本进行测试。后续后支持更多版本。

    完成在 Doris 中建立 Iceberg 外表后,除了无法使用 Doris 中的数据模型(rollup、预聚合、物化视图等)外,与普通的 Doris OLAP 表并无区别

    FE配置

    • iceberg_table_creation_strict_mode

      创建 Iceberg 表默认开启 strict mode。
      strict mode 是指对 Iceberg 表的列类型进行严格过滤,如果有 Doris 目前不支持的数据类型,则创建外表失败。

    • iceberg_table_creation_interval_second

      自动创建 Iceberg 表的后台任务执行间隔,默认为 10s。

    • max_iceberg_table_creation_record_size

      Iceberg 表创建记录保留的最大值,默认为 2000. 仅针对创建 Iceberg 数据库记录。