源端为SQLServer,目的端为Hudi
该链路目前仅支持整库场景。
该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。
前提条件
- 已开启SQLServer库、表的CDC(change data capture,就是增量实时同步)能力,详情请参见如下示例。
- 启用数据库CDC。
USE YourDatabaseName; EXEC sys.sp_cdc_enable_db; GO -- 查看数据库是否启动CDC SELECT is_cdc_enabled, name FROM sys.databases WHERE name = 'YourDatabaseName'
- 启用表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';
- 启用数据库CDC。
- 源端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];
- 给用户添加数据库CONNECT, VIEW DATABASE STATE 权限。
整库场景
- 源端配置。
库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。
- 目标端配置。
图2 配置目标端参数
- 源库表和目标匹配策略:
- 目标数据源配置:
- 数据存储路径: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)、选择字段类型、填写字段值。
用户可同时添加多个附加字段。
- 自动建表:单击“自动建表”为列表中的表按照已配置规则自动建表。成功后表建立方式会显示为使用已有表。
- 数据存储路径:Hudi数据存储的基础路径,只对自动建表生效。每张目的端表会在基础路径下创建子目录,支持HDFS或OBS路径。