全部产品
Search
文档中心

实时计算Flink版:管理Iceberg Catalog

更新时间:Dec 22, 2025

配置Iceberg Catalog后,您可以通过实时计算Flink版直接访问阿里云数据湖构建(Data Lake Formation)中的Iceberg表。本文为您介绍如何在实时计算开发控制台创建、查看与删除Iceberg Catalog,以及管理Iceberg数据库和Iceberg表。

注意事项

  • 仅实时计算引擎VVR 11.1及以上版本支持创建和配置Iceberg Catalog和Iceberg 表。

  • 仅支持对接 DLF Catalog。

创建Iceberg DLF Catalog

  1. 在DLF上创建 Catalog,详情请参见快速使用DLF

    1. DLF Catalog需要和Flink工作空间位于同一地域,否则无法在后续流程中完成关联。

  2. 在实时计算开发控制台上,创建Iceberg Catalog。

    说明
    • 这里仅用于建立与DLF Catalog的映射连接,创建或删除Catalog仅影响映射关系,不会对DLF中的实际数据产生影响

    • 通过Iceberg REST 在DLF Catalog创建的表均为Iceberg表

    1. 登录实时计算控制台

    2. 单击目标工作空间操作列下的控制台,进入对应的工作空间。

    3. 在左侧导航栏,单击数据开发 > 数据查询

    4. 数据查询文本编辑区域,输入以下SQL,单击页面右下角的执行环境,选择对应版本的Session集群(VVR 11.2.0及以上引擎版本),执行SQL,即可以Iceberg REST创建DLF Catalog。

      CREATE CATALOG `catalog_name` 
       WITH (
          'type' = 'iceberg',
          'catalog-type' = 'rest',
          'uri' = 'http://cn-hangzhou-vpc.dlf.aliyuncs.com/iceberg',
          'warehouse' = 'iceberg_test',
          'rest.signing-region' = 'cn-hangzhou',
          'io-impl' = 'org.apache.iceberg.rest.DlfFileIO'
      );

      参数说明如下:

      参数

      描述

      是否必填

      示例

      type

      类型,固定为iceberg。从自定义Jar自动解析,请勿更改。

      iceberg

      catalog-type

      Catalog类型,固定为rest。

      rest

      token.provider

      Token提供方,固定为dlf。

      dlf

      uri

      访问DLF Rest Catalog的URI,详见Iceberg REST

      http://cn-hangzhou-vpc.dlf.aliyuncs.com/iceberg

      warehouse

      DLF Catalog名称。

      iceberg_test

      rest.signing-region

      DLF的Region ID,详见服务接入点

      cn-hangzhou

      io-impl

      固定值:org.apache.iceberg.rest.DlfFileIO

      org.apache.iceberg.rest.DlfFileIO

管理Iceberg数据库

数据查询文本编辑区域输入如下命令,选中代码后单击运行

  • 创建数据库

    创建Iceberg Catalog后,Catalog中会自动创建名为default的数据库。

    --my-catalog需要替换为您创建的Catalog名称。
    USE CATALOG `my-catalog`;
    
    --my_db需要替换为自定义的database英文名称。
    CREATE DATABASE `my_db`;
  • 删除数据库

    重要

    无法删除DLF类型Catalog下的default数据库

    --my-catalog需要替换为您创建的Catalog名称。
    USE CATALOG `my-catalog`;
    
    --my_db需要替换为您想要删除的数据库名称。
    DROP DATABASE `my_db`; --只需要删除内部没有任何表的数据库。
    DROP DATABASE `my_db` CASCADE; --删除数据库且同时删除数据库下的所有表。
    

管理Iceberg表

创建表

说明

Iceberg Catalog配置完成后,您就可以在作业中引用Iceberg Catalog表信息,作为源表、结果表和维表时,无需声明表的DDL。在SQL命令方式中,您可以直接使用Iceberg Catalog表名称的完整格式${Iceberg-catalog-name}.${Iceberg-db-name}.${Iceberg-table-name},也可以用use catalog ${Iceberg-catalog-name}use ${Iceberg-db-name}语句先声明Catalog名称和数据库名称,后面的SQL里只写表名称${Iceberg-table-name}即可。

  • 通过CREATE TABLE语句创建表

    数据查询文本编辑区域输入如下命令后,选中代码后单击运行

    在名为my-catalog的Catalog下的my_db的数据库中,创建一张分区表,其中分区键为dt,主键为dt、shop_id和user_id。代码示例如下。

    --my-catalog需要替换为您创建的Iceberg Catalog名称。
    --my_db需要替换为您想要使用的database名称。
    --my_tbl也可以改为自定义的英文名称。
    CREATE TABLE `iceberg_test`.`test`.`my_tbl` (
      dt STRING,
      shop_id BIGINT,
      user_id BIGINT,
      num_orders INT,
      total_amount INT,
      PRIMARY KEY (dt, shop_id, user_id) NOT ENFORCED
    ) PARTITIONED BY (dt)
    ;

修改表结构

数据查询文本编辑区域输入如下命令,选中代码后单击运行

操作

代码示例

临时修改表参数

您可以通过在表名后添加SQL Hint的方式,在写入表时临时修改表参数。临时修改的表参数仅对当前SQL作业生效。

  • 在写入my_table表时,临时将upsert-enabled设为true。

    INSERT INTO tableName /*+ OPTIONS('upsert-enabled'='true') */
    SELECT ...;
  • 在消费my_table表时,临时将monitor-interval设为10s。

    SELECT * FROM my_table /*+ OPTIONS('monitor-interval'='10s') */

重命名表

将表的名称从my_table修改为my_table_new。

ALTER TABLE my_table RENAME TO my_table_new;

添加新列

  • 将类型为INT的c1列和类型为STRING的c2列添加在my_table表的末尾。

    ALTER TABLE my_table ADD (c1 INT, c2 STRING);

重命名列

将my_table表中名称为c0的列重命名为c1。

ALTER TABLE my_table RENAME c0 TO c1;

删除列

将my_table表中c1和c2两列删除。

ALTER TABLE my_table DROP (c1, c2);

修改列注释

将my_table表中buy_count列的注释改为this is buy count。

ALTER TABLE my_table MODIFY buy_count BIGINT COMMENT 'this is buy count';

修改列顺序

  • 将my_table表中名称为col_a,类型为DOUBLE的列移动到开头。

    ALTER TABLE my_table MODIFY col_a DOUBLE FIRST;
  • 将my_table表中名称为col_a,类型为DOUBLE的列移动到col_b列的后面。

    ALTER TABLE my_table MODIFY col_a DOUBLE AFTER col_b;

删除表

数据查询文本编辑区域输入如下命令,选中代码后单击运行

--my-catalog需要替换为您创建的Iceberg Catalog名称。
--my_db需要替换为您想要使用的database名称。
--my_tbl需要替换为您创建的Iceberg Catalog表名称。
DROP TABLE `my-catalog`.`my_db`.`my_tbl`;

出现The following statement has been executed successfully!的提示信息说明Iceberg表删除成功。

查看或删除Iceberg Catalog

  1. 实时计算控制台,单击目标工作空间操作列的控制台

  2. 数据管理页面,查看或删除Iceberg Catalog。

    • 查看:在Catalog列表页面,查看Catalog名称类型。如果您需要查看Catalog下的数据库和表,请单击查看

    • 删除:在Catalog列表页面,单击目标Catalog名称对应操作列的删除

      说明

      删除Iceberg Catalog只会删除Flink项目空间数据管理中的记录,不会影响Iceberg表的数据文件。删除Catalog后,只需要重新执行创建Iceberg Catalog,即可重新使用Catalog中的Iceberg表。

      您也可以在数据查询文本编辑区域输入DROP CATALOG <catalog name>;后,选中代码后单击运行