适用场景
业务系统中,数据源往往会采用分表的形式,以减少单表大小,支持复杂的业务应用 场景。
在这种情况下,通过CDM进行数据集成时,需要针对每张表创建一个数据迁移作业。
您可以参考本教程,通过数据开发模块的For Each算子和CDM节点算子,配合作业参 数,实现批量创建分表迁移作业。
本教程中,源端MySQL数据库中存在三张分表,分别是mail01、mail02和mail03,且 表结构一致,数据内容不同。目的端为MRS HIVE服务。
操作前提
● 已创建CDM集群。
● 已经开通了MRS HIVE服务。
● 已经在MRS HIVE服务中创建了数据库和表。
创建连接
步骤1 登录DGC控制台,找到所需要的DGC实例,单击实例卡片上的“进入控制台”,进入 概览页面。
步骤2 找到所需要的工作空间,单击工作空间的“数据集成”,系统跳转至数据集成页面。
步骤3 单击CDM集群后的“作业管理”,进入作业管理界面。
步骤4 单击“连接管理->驱动管理”,参考管理驱动页面,上传MySQL数据库驱动。
步骤5 选择“连接管理 > 新建连接”,新建MySQL连接。连接器类型选择“MySQL”,然后 单击“下一步”配置连接参数,参数说明如表1-1所示。配置完成后,单击“保存”回 到连接管理界面。
图
1-1 配置 MySQL 连接
表
1-1 MySQL 连接参数
参数名 说明 取值样例
名称 连接的名称,根据连接的数据源类型,用户可自定义便 于记忆、区分的连接名。
mysql
数据库服务
器 配置为要连接的数据库的IP地址或域名。 192.168.0.
1
端口 配置为要连接的数据库的端口。 3306
数据库名称 配置为要连接的数据库名称。 mysql
用户名 待连接数据库的用户。该数据库用户需要有数据表的读
写权限,以及对元数据的读取权限。 root
密码 用户密码。
-使用Agent 是否选择通过Agent从源端提取数据。 否
步骤6 再次选择“连接管理 > 新建连接”,新建MRS Hive连接。连接器类型选择“MRS Hive”,然后单击“下一步”配置连接参数,参数说明如表1-2所示。配置完成后,单 击“保存”回到连接管理界面。
图
1-2 配置 MRS Hive 连接
表
1-2 MRS Hive 连接参数
参数名 说明 取值样例
名称 连接的名称,根据连接的数据源类型,用户可自定
义便于记忆、区分的连接名。 hive
Manager IP MRS Manager的浮动IP地址,可以单击输入框后的
“选择”来选定已创建的MRS集群,CDM会自动填 充下面的鉴权参数。
127.0.0.1
认证类型 访问MRS的认证类型:
● SIMPLE:非安全模式选择Simple鉴权。
● KERBEROS:安全模式选择Kerberos鉴权。
KERBEROS
Hive版本 Hive的版本。根据服务端Hive版本设置。 HIVE_3_X
参数名 说明 取值样例 用户名 选择KERBEROS鉴权时,需要配置MRS Manager的
用户名和密码。从HDFS导出目录时,如果需要创
● 如果CDM集群为2.9.0版本及之后版本,且MRS集群为 3.1.0及之后版本,则所创建的用户至少需具备 Manager_viewer的角色权限才能在CDM创建连接;
如果需要对应组件的进行库、表、数据的操作,还需 要添加对应组件的用户组权限。
● 如果CDM集群为2.9.0之前的版本,或MRS集群为3.1.0 之前的版本,则所创建的用户需要具备
Manager_administrator、Manager_tenant或 System_administrator权限,才能在CDM创建连接。
cdm
密码 访问MRS Manager的用户密码。
-OBS支持 需服务端支持OBS存储。在创建Hive表时,您可以
指定将表存储在OBS中。 否
运行模式 “HIVE_3_X”版本支持该参数。支持以下模式:
● EMBEDDED:连接实例与CDM运行在一起,该 模式性能较好。
● STANDALONE:连接实例运行在独立进程。如 果CDM需要对接多个Hadoop数据源(MRS、
群配置 您可以通过使用集群配置,简化Hadoop连接参数
配置。 否
----结束
创建样例作业
步骤1 创建MySQL第一个分表mail001到MRS Hive目标表mail的数据集成作业,具体如下图 所示。
注意,作业任务配置中,需要将“作业运行完是否删除”配置为“不删除”。
步骤2 样例作业创建完毕后,如下图查看作业JSON,并复制作业JSON,用于后续数据开发 作业配置。
----结束
创建数据开发作业
步骤1 单击工作空间的“数据开发”,进入DGC数据开发模块。
步骤2 创建子作业“分表作业”,选择CDM节点,节点属性中作业类型配置为“创建新作 业”,并将步骤2中复制的作业JSON粘贴到“CDM作业消息体”中。
步骤3 编辑“CDM作业消息体”。
1. 由于源表有三个,分别为mail001、mail002、mail003,因此需要将作业JSON中 的“fromJobConfig.tableName”属性值配置为“mail${num}”,即源表名是通 过参数配置。如下图所示:
2. 由于数据迁移作业名不能重复,因此修改JSON中作业名称“name”属性值配置 为“mail${num}”,目的是创建多个CDM集成作业,避免作业名称重复。如下图 所示:
说明
如果需要创建分库的作业,也可将作业JSON中的源连接修改为变量,方便替换。
步骤4 添加作业参数num,用于作业JSON中调用。如下图所示:
添加完成后点击“保存并提交版本”,以保存子作业。
步骤5 创建主作业“集成管理”,选择For Each节点,每次循环调用分表作业,分别将参数 001、002、003传递给子作业,生成不同的分表抽取任务。
关键配置如下:
● 子作业:选择“分表作业”
● 数据集:[['001'],['002'],['003']]
● 作业运行参数:@@#{Loop.current[0]}@@
说明
此处作业运行参数的EL表达式需要添加@@。如果不加@@包围,数据集001会被识别为 1,导致源表名不存在的问题。
如下图所示:
配置完成后点击“保存并提交版本”,以保存主作业。
步骤6 创建主作业和子作业完成后,通过测试运行主作业“集成管理”,检查数据集成作业 创建情况。运行成功后,创建并运行CDM子作业成功。
----结束
注意事项
1. 由于CDM版本不同,某些属性可能不支持,比如fromJobConfig.BatchJob。当创 建任务报错时,需要在请求体中删除该属性。如下图所示:
2. CDM节点配置为创建作业时,节点运行会检测是否有同名CDM作业。
– 如果CDM作业未运行,则按照请求体内容更新同名作业。
– 如果同名CDM作业正在运行中,则等待作业运行完成。此时该CDM作业可能 被其他任务启动,可能会导致数据抽取不符合预期(如作业配置未更新、运 行时间宏未替换正确等),因此请注意不要启动或者创建多个同名作业。