更新时间:2024-10-18 GMT+08:00
分享

源端为SQLServer,目的端为Hudi

该链路目前仅支持整库场景。

该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员

前提条件

  • 已开启SQLServer库、表的CDC(change data capture,就是增量实时同步)能力,详情请参见如下示例。

    开启CDC能力时数据库账号至少需要有sysadmin权限。

    1. 启用数据库CDC。
      USE YourDatabaseName;
      EXEC sys.sp_cdc_enable_db;
      GO  
      -- 查看数据库是否启动CDC
      SELECT is_cdc_enabled, name FROM sys.databases WHERE name = 'YourDatabaseName'
    2. 启用表CDC。
      EXEC sys.sp_cdc_enable_table
           @source_schema = N'dbo', -- Schema
           @source_name = N'YourTable',-- 表名    
           @role_name = NULL,-- 可选,CDC访问角色名称    
           @supports_net_changes = 0;
      GO  -- 查看表是否启动CDC
      SELECT name,is_tracked_by_cdc FROM sys.tables WHERE name = 'YourTable';
  • 源端SQLServer需要给管理中心数据连接中配置的用户赋予以下全部权限。
    • 给用户添加数据库CONNECT, VIEW DATABASE STATE 权限。
      USE YourDatabaseName;
      GRANT CONNECT, VIEW DATABASE STATE TO [YourUserName];
    • 给用户添加CDC schema的SELECT 权限。
      USE YourDatabaseName;
      GRANT SELECT ON SCHEMA::[cdc] TO [YourUserName]; 
    • 给用户添加表的SELECT权限。
      USE YourDatabaseName;
      GRANT SELECT ON OBJECT::[YourSchema].[YourTable] TO [YourUserName];

整库场景

  1. 源端配置。
    添加数据源,选择需要迁移的SQLServer表。
    图1 选择库表

    库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。

  2. 目标端配置。
    图2 配置目标端参数
    • 源库表和目标匹配策略:
      • 库匹配策略:配置目标数据库的匹配策略,使数据按照规划迁移至目标库。
        用户需要提前创建对应数据库,否则可能导致后续自动建表失败。
        • 与来源库同名:会迁移至目的端对应与来源库同名的数据库中。
        • 自定义:支持用户指定目的端库名,也支持通过#{source_db_name}给源数据库名添加自定义字段变成目的端Hudi表的库名。
      • 表匹配策略:配置目标数据表的匹配策略,使数据按照规划迁移至目标表。

        用户不需要提前创建对应数据表,后续作业时自动建表。

        • 与来源表同名:会迁移至目的端对应与来源表同名的表中。
        • 自定义:支持用户指定目的端表名,也支持通过内置参数#{source_table_name}给源表名添加前后缀,变成目的端Hudi表的表名。
    • 目标数据源配置:
      • 数据存储路径:Hudi数据存储的基础路径,只对自动建表生效。每张目的端表会在基础路径下创建子目录,支持HDFS或OBS路径。
        • OBS格式:obs://{桶名}。
        • HDFS格式:/tmp。
      • Hudi表属性全局配置:单击“查看编辑”配置Hudi表属性全局配置。

        “Hudi全局配置”作用于所有Hudi表,可配置的Hudi配置项参考Hudi官网介绍

        “Hudi全局配置”优先级低于单表“表属性编辑”中的配置,存在相同配置项时会被覆盖。

      • 源表与目标表映射:
        图3 配置源表与目标表映射
        • Hudi表必须设置“同步主键”,在源端为非主键表时,必须在字段映射阶段手动勾选主键。
        • 表属性编辑:单击操作列“表属性编辑”可配置Hudi表属性,包含表类型,分区类型及表自定义属性。

          表类型:MERGE_ON_READ、COPY_ON_WRITE。

          分区类型:无分区、时间分区、自定义分区。

          其中时间分区需要用户指定一个源端表名,选择一个时间转换格式。

          比如时间分区用户指定一个源端表名src_col_1,选择一个时间转换格式,日(yyyyMMdd)、月(yyyyMM)、年(yyyy),自动建表时会在Hudi表默认创建一个cdc_partition_key的字段,系统会根据配置的时间转换格式将源端字段(src_col_1)的值格式化后写入cdc_partition_key中。

          自定义分区:选择源端的某个字段或多个字段作为分区,多个分区通过英文半角逗号”,”分割。

        • 附加字段编辑:单击操作列“附加字段编辑”可为迁移后的Hudi表中增加自定义字段,附加字段会成为一个新的字段加入到Hudi表的建表中。
          表1 附加字段值支持情况

          类型

          示例

          常量

          -

          字段变量

          -

          对于新建的表,用户可以在已有的源表字段基础上添加附加字段,可以自定义字段名(如custom_defined_col)、选择字段类型、填写字段值。

          用户可同时添加多个附加字段。

        • 自动建表:单击“自动建表”为列表中的表按照已配置规则自动建表。成功后表建立方式会显示为使用已有表。

相关文档