doris:Iceberg

自 2.1.6 版本开始,Apache Doris 支持对 Iceberg 的 DDL 和 DML 操作。用户可以直接通过 Apache Doris 在 Iceberg 中创建库表,并将数据写入到 Iceberg 表中。通过该功能,用户可以通过 Apache Doris 对 Iceberg 进行完整的数据查询和写入操作,进一步帮助用户简化湖仓一体架构。

本文介绍在 Apache Doris 中支持的 Iceberg 操作,语法和使用须知。

提示

这是一个实验功能。

提示

使用前,请先设置:
set global enable_nereids_planner = true;
set global enable_fallback_to_original_planner = false;

元数据创建与删除

Catalog

  • 创建

    CREATE CATALOG [IF NOT EXISTS] iceberg PROPERTIES (
        "type" = "iceberg",
        "iceberg.catalog.type" = "hms",
        "hive.metastore.uris" = "thrift://172.21.16.47:7004",
        "warehouse" = "hdfs://172.21.16.47:4007/user/hive/warehouse/",
        "hadoop.username" = "hadoop",
        "fs.defaultFS" = "hdfs://172.21.16.47:4007"
    );
    

    上面主要演示了如何在 Apache Doris 中创建 HMS Iceberg Catalog。Apache Doris 目前支持多种类型的 Iceberg Catalog。更多配置,请参阅 Iceberg Catalog

    注意:

    • 如果需要通过 Apache Doris 的 Hive Catalog 创建 Iceberg 表或写入数据,需要在 Catalog 属性中显式增加 fs.defaultFS 属性以及 warehouse 属性。如果创建 Catalog 仅用于查询,则这两个参数可以省略。
    • Hive Catalog 可以查询 Iceberg 表,但是不能在 Hive Catalog 中创建 Iceberg 表。
  • 删除

    DROP CATALOG [IF EXISTS] iceberg;
    

    删除 Catalog 并不会删除 Iceberg 中的任何库表信息。仅仅是在 Apache Doris 中移除了对这个 Iceberg Catalog 的映射。

Database

  • 创建

    可以通过 SWITCH 语句切换到对应的 Catalog 下,执行 CREATE DATABASE 语句:

    SWITCH iceberg;
    CREATE DATABASE [IF NOT EXISTS] iceberg_db;
    

    也可以使用全限定名创建,或指定 location,如:

    CREATE DATABASE [IF NOT EXISTS] iceberg.iceberg_db;
    

### DorisIceberg 集成及其在数据处理中的应用场景 #### DorisIceberg 的特性概述 Apache Iceberg 是一种用于大型分析型表格的数据湖表格式,能够转换表数据到分区值并维持关系的同时收集列级别的统计信息[^1]。这种设计使得 Iceberg 能够高效支持大规模数据分析操作。 StarRocks (原名Doris) 则是一个现代化的分布式SQL数据库,专为实时多维分析而构建。它提供了快速查询性能以及强大的聚合计算能力,在线性扩展性和高可用方面表现出色。 #### DorisIceberg 的集成优势 通过将 StarRocks 与 Apache Iceberg 结合起来使用,可以获得如下好处: - **高效的外部表访问**:利用 Iceberg 表结构的优势,可以更加快捷方便地读取存储于对象存储上的海量半结构化/非结构化文件作为外部表供 StarRocks 查询。 - **无缝衔接大数据生态**:由于 Iceberg 已经广泛应用于 Hadoop 生态系统之中,因此借助这一桥梁作用可以让 StarRocks 更容易接入整个大数据生态圈内的其他组件和服务。 - **增强元数据管理功能**:Iceberg 提供了一套完整的 API 来管理和维护表模式变更历史记录等功能;这些都可以被 StarRocks 所借用从而提升自身的灵活性和易用性。 #### 应用场景实例 在一个典型的大规模互联网公司日志分析平台中,可能涉及到每天数十亿条甚至更多数量级的日志事件录入工作。此时如果采用传统的关系型数据库来保存原始日志显然不太现实——不仅成本高昂而且效率低下。相反,选择基于云的对象存储服务(如 AWS S3 或阿里云 OSS)配合 Iceberg 构建起一套离线数仓架构则显得更为合理可行。而对于那些需要即时响应业务需求变化、频繁执行复杂 OLAP 类型查询请求的应用来说,则完全可以考虑引入 StarRocks 这样的高性能 MPP 数据库产品来进行加速优化处理。 ```sql CREATE EXTERNAL TABLE IF NOT EXISTS logs_iceberg ( event_time TIMESTAMP, user_id STRING, action STRING, ... ) STORED AS ICEBERG LOCATION 's3://bucket/path/to/table'; ``` 上述 SQL 创建了一个指向位于 Amazon S3 上某个特定路径下的 Iceberg 表格 `logs_iceberg` 的外部表定义语句。之后就可以像对待普通本地表一样对其进行各种 DDL/DML 操作了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值