配置DLF Catalog后,您就可以在Flink全托管控制台直接访问DLF实例中的表。本文为您介绍如何在Flink全托管模式下配置、查看及删除DLF Catalog。

背景信息

阿里云数据湖构建(Data Lake Formation,简称DLF)是阿里云官方提供的一款统一元数据管理的产品。您可以方便地借助DLF产品来管理创建的表格,这些表格的格式可以是流行的开源格式,例如Iceberg、Hudi、Delta、Parquet、ORC或Avro等。目前阿里云EMR常见的计算引擎(例如Spark、Flink、Hive或Presto等)都跟DLF有着较为完善的集成度。

本文将从以下方面为您介绍如何管理DLF Catalog:

前提条件

已开通阿里云数据湖构建服务

使用限制

  • 仅Flink计算引擎vvr-4.0.12-flink-1.13及以上版本支持配置DLF Catalog。
  • Flink在DLF Catalog下仅支持管理Iceberg和Hudi两种数据湖格式。

配置DLF Catalog

支持UI与SQL命令两种方式配置DLF Catalog,推荐使用UI方式配置DLF Catalog。

UI方式

  1. 登录实时计算管理控制台
  2. 进入创建Catalog页面。
    1. Flink全托管页签,单击目标工作空间操作列下的控制台
    2. 在左侧导航栏,单击作业开发
    3. 在左侧,单击Schemas页签。
    4. 单击加号图标,在菜单栏下拉框中选择创建Catalog
  3. 创建DLF Catalog。
    1. 创建Catalog页面,选择DLF
    2. 填写参数配置信息。
      DLF Catalog
      参数 说明 是否必填 备注
      catalogname DLF Catalog名称。 请填写为自定义的英文名。
      access.key.id 阿里云账号的AccessKey ID。 获取方法请参见获取AccessKey
      access.key.secret 阿里云账号的AccessKey Secret。 获取方法请参见获取AccessKey
      warehouse DLF Catalog中表默认的OSS存放路径。 格式为oss://<bucket>/<object>。其中:
      • bucket:表示您创建的OSS Bucket名称。
      • object:表示您存放数据的路径。
      说明 请在OSS管理控制台上查看您的bucket和object名称。
      oss.endpoint 阿里云对象存储服务OSS的Endpoint。 请详情参见访问域名和数据中心
      说明
      • 推荐您为oss.endpoint参数配置OSS的VPC Endpoint。例如,如果您选择的地域为cn-hangzhou地域,则oss.endpoint需要配置为oss-cn-hangzhou-internal.aliyuncs.com。
      • 如果您需要跨VPC访问OSS,则请参见如何访问跨VPC里的存储资源?
      dlf.endpoint 阿里云DLF服务的Endpoint。
      说明
      • 推荐您为dlf.endpoint参数配置DLF的VPC Endpoint。例如,如果您选择的地域为cn-hangzhou地域,则dlf.endpoint参数需要配置为dlf-vpc.cn-hangzhou.aliyuncs.com。
      • 如果您需要跨VPC访问DLF,则请参见如何访问跨VPC里的存储资源?
      dlf.region-id 阿里云DLF服务的地域名。
      说明 请和dlf.endpoint选择的地域保持一致。
    3. 单击确认
  4. 单击刷新图标,刷新查看新建的DLF Catalog。
    刷新按钮

SQL命令方式

  1. 登录实时计算管理控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 在左侧导航栏,单击作业开发
  4. 在页面左上角,单击新建,文件类型选择SQL。
  5. 在文本编辑区域,输入配置DLF Catalog的命令。
    CREATE CATALOG dlf WITH (
       'type' = 'dlf',
       'access.key.id' = '<YourAliyunAccessKeyId>',
       'access.key.secret' = '<YourAliyunAccessKeySecret>',
       'warehouse' = '<YourAliyunOSSLocation>',
       'oss.endpoint' = '<YourAliyunOSSEndpoint>',
       'dlf.region-id' = '<YourAliyunDLFRegionId>',
       'dlf.endpoint' = '<YourAliyunDLFEndpoint>'
    );
    参数 说明 是否必填 备注
    catalogname DLF Catalog名称。 请填写为自定义的英文名。
    type 类型。 固定值为dlf。
    access.key.id 阿里云账号的AccessKey ID。 获取方法请参见获取AccessKey
    access.key.secret 阿里云账号的AccessKey Secret。 获取方法请参见获取AccessKey
    warehouse DLF Catalog中表默认的OSS存放路径。 格式为oss://<bucket>/<object>。其中:
    • bucket:表示您创建的OSS Bucket名称。
    • object:表示您存放数据的路径。
    说明 请在OSS管理控制台上查看您的bucket和object名称。
    oss.endpoint 阿里云对象存储服务OSS的Endpoint。 请详情参见访问域名和数据中心
    说明
    • 推荐您为oss.endpoint参数配置OSS的VPC Endpoint。例如,如果您选择的地域为cn-hangzhou地域,则oss.endpoint需要配置为oss-cn-hangzhou-internal.aliyuncs.com。
    • 如果您需要跨VPC访问OSS,则请参见如何访问跨VPC里的存储资源?
    dlf.endpoint 阿里云DLF服务的Endpoint。
    说明
    • 推荐您为dlf.endpoint参数配置DLF的VPC Endpoint。例如,如果您选择的地域为cn-hangzhou地域,则dlf.endpoint参数需要配置为dlf-vpc.cn-hangzhou.aliyuncs.com。
    • 如果您需要跨VPC访问DLF,则请参见如何访问跨VPC里的存储资源?
    dlf.region-id 阿里云DLF服务的地域名。
    说明 请和dlf.endpoint选择的地域保持一致。
  6. 单击执行
    执行完会提示Query has been executed。
  7. 在左侧,单击Schemas页签。
  8. 单击刷新图标,刷新查看新建的DLF Catalog。
    刷新按钮

查看DLF Catalog

DLF Catalog配置成功后,您可以通过以下步骤查看DLF元数据。

  1. 登录实时计算管理控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 在左侧导航栏,单击作业开发
  4. 单击Schemas页签。
  5. 在顶部菜单栏下拉框中,切换到目标DLF Catalog名称,本文以dlf为例。
    刷新按钮
  6. 查看目标DLF Catalog下的数据库、表和函数信息。
    表名

使用DLF Catalog

  • 创建数据库和表
    1. 作业开发页面,创建一个新的流SQL作业,编写如下代码。
      CREATE DATABASE dlf.dlf_testdb;
      
      CREATE TABLE dlf.dlf_testdb.iceberg (
        id    BIGINT,
        data  STRING,
        dt    STRING
      ) PARTITIONED BY (dt) WITH(
        'connector' = 'iceberg'
      );
      
      CREATE TABLE dlf.dlf_testdb.hudi (
        id    BIGINT PRIMARY KEY NOT ENFORCED,
        data  STRING,
        dt    STRING
      ) PARTITIONED BY (dt) WITH(
        'connector' = 'hudi'
      );
    2. 依次选中三条DDL语句,单击执行,完成dlf数据库、dlf_testdb.iceberg表、dlf_testdb.hudi表的创建。
      说明
      • 您可以在您创建的Flink Session集群上执行数据库和表的创建操作,这样能更快地完成执行操作。
      • 创建完成后,在作业开发页面,单击Schemas,就可以查看到上述创建的数库和表。
  • 写入数据
    1. 作业开发页面,创建一个新的流SQL作业,编写如下代码。
      INSERT INTO dlf.dlf_testdb.iceberg VALUES (1, 'AAA', '2022-02-01'), (2, 'BBB', '2022-02-01');
      INSERT INTO dlf.dlf_testdb.hudi VALUES (1, 'AAA', '2022-02-01'), (2, 'BBB', '2022-02-01');
    2. 单击验证,完成SQL语法的验证。
    3. 单击上线,完成流作业的上线。
  • 读取数据
    1. 作业开发页面,创建一个新的流SQL作业,编写如下代码。
      SELECT * FROM dlf.dlf_testdb.iceberg LIMIT 2;
      SELECT * FROM dlf.dlf_testdb.hudi LIMIT 2;
    2. 单击验证,完成SQL语法的验证。
    3. 单击执行,执行完后可以在控制台上查看返回的数据记录。

删除DLF Catalog

说明 删除DLF Catalog不会影响已运行的作业,但会导致使用该Catalog下表的作业,在上线或重启时报无法找到该表的错误,请您谨慎操作。

支持UI与SQL命令两种方式删除DLF Catalog,推荐使用UI方式删除DLF Catalog。

UI方式

  1. 登录实时计算管理控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 在左侧导航栏,单击作业开发
  4. 在左侧,单击Schemas页签。
  5. 在顶部菜单栏下拉框中,选择目标DLF Catalog名称,单击删除图标图标。
    删除按钮
  6. 在弹出的页面中,单击删除
  7. 单击刷新图标,刷新查看新建的DLF Catalog是否已被删除。

SQL命令方式

  1. 登录实时计算管理控制台
  2. Flink全托管页签,单击目标工作空间操作列下的控制台
  3. 在左侧导航栏,单击作业开发
  4. 在页面左上角,单击新建,文件类型选择SQL。
  5. 在文本编辑区域,输入以下命令。
    DROP CATALOG ${catalog_name}

    其中,catalog_name为您要删除的在Flink全托管开发控制台上显示的DLF Catalog名称。

  6. 单击执行
  7. 在左侧,单击Schemas页签。
  8. 单击刷新图标,刷新查看新建的DLF Catalog是否已被删除。