- 最新动态
- 功能总览
- 产品介绍
- 快速入门
-
用户指南
- IAM权限管理
- 支持的数据源
- 创建并管理CDM集群
-
在CDM集群中创建连接
- 创建CDM与数据源之间的连接
-
配置连接参数
- OBS连接参数说明
- PostgreSQL/SQLServer连接参数说明
- 数据仓库服务(DWS)连接参数说明
- 云数据库MySQL/MySQL数据库连接参数说明
- Oracle数据库连接参数说明
- DLI连接参数说明
- Hive连接参数说明
- HBase连接参数说明
- HDFS连接参数说明
- FTP/SFTP连接参数说明
- Redis连接参数说明
- DDS连接参数说明
- CloudTable连接参数说明
- MongoDB连接参数说明
- Cassandra连接参数说明
- DIS连接参数说明
- Kafka连接参数说明
- DMS Kafka连接参数说明
- 云搜索服务(CSS)连接参数说明
- Elasticsearch连接参数说明
- 达梦数据库 DM连接参数说明
- SAP HANA连接参数说明
- 分库连接参数说明
- MRS Hudi连接参数说明
- MRS ClickHouse连接参数说明
- 神通(ST)连接参数说明
- LogHub(SLS)连接参数说明
- Doris连接参数说明
- YASHAN连接参数说明
- 上传CDM连接驱动
- 新建Hadoop集群配置
-
在CDM集群中创建作业
- 新建表/文件迁移作业
- 新建整库迁移作业
-
配置CDM作业源端参数
- 配置OBS源端参数
- 配置HDFS源端参数
- 配置HBase/CloudTable源端参数
- 配置Hive源端参数
- 配置DLI源端参数
- 配置FTP/SFTP源端参数
- 配置HTTP源端参数
- 配置PostgreSQL/SQL Server源端参数
- 配置DWS源端参数
- 配置SAP HANA源端参数
- 配置MySQL源端参数
- 配置Oracle源端参数
- 配置分库源端参数
- 配置MongoDB/DDS源端参数
- 配置Redis源端参数
- 配置DIS源端参数
- 配置Kafka/DMS Kafka源端参数
- 配置Elasticsearch/云搜索服务源端参数
- 配置MRS Hudi源端参数
- 配置MRS ClickHouse源端参数
- 配置达梦数据库 DM源端参数
- 配置LogHub(SLS)源端参数
- 配置神通(ST)源端参数
- 配置Doris源端参数
- 配置YASHAN源端参数
- 配置CDM作业目的端参数
- 配置CDM作业字段映射
- 配置CDM作业定时任务
- CDM作业配置管理
- 管理单个CDM作业
- 批量管理CDM作业
- 查看审计日志
- 关键操作指导
- 使用教程
- 最佳实践
- 性能白皮书
- 安全白皮书
- API参考
- SDK参考
-
常见问题
- 通用类
-
功能类
- 是否支持增量迁移?
- 是否支持字段转换?
- Hadoop类型的数据源进行数据迁移时,建议使用的组件版本有哪些?
- 数据源为Hive时支持哪些数据格式?
- 是否支持同步作业到其他集群?
- 是否支持批量创建作业?
- 是否支持批量调度作业?
- 如何备份CDM作业?
- 如何解决HANA集群只有部分节点和CDM集群网络互通?
- 如何使用Java调用CDM的Rest API创建数据迁移作业?
- 如何将云下内网或第三方云上的私网与CDM连通?
- CDM是否支持参数或者变量?
- CDM迁移作业的抽取并发数应该如何设置?
- CDM是否支持动态数据实时迁移功能?
- CDM是否支持集群关机功能?
- 如何使用表达式方式获取当前时间?
- 在创建迁移作业时,where语句参数中的时间格式是怎样的?
- CDM作业可以将源表中的字段注释迁移到目标端表吗?
- 如何查询数据连接创建人?
-
故障处理类
- 日志提示解析日期格式失败时怎么处理?
- 字段映射界面无法显示所有列怎么处理?
- CDM迁移数据到DWS时如何选取分布列?
- 迁移到DWS时出现value too long for type character varying怎么处理?
- OBS导入数据到SQL Server时出现Unable to execute the SQL statement怎么处理?
- 获取集群列表为空/没有权限访问/操作时报当前策略不允许执行?
- Oracle迁移到DWS报错ORA-01555
- MongoDB连接迁移失败时如何处理?
- Hive迁移作业长时间卡顿怎么办?
- 使用CDM迁移数据由于字段类型映射不匹配导致报错怎么处理?
- MySQL迁移时报错“JDBC连接超时”怎么办?
- 创建了Hive到DWS类型的连接,进行CDM传输任务失败时如何处理?
- 如何使用CDM服务将MySQL的数据导出成SQL文件,然后上传到OBS桶?
- 如何处理CDM从OBS迁移数据到DLI出现迁移中断失败的问题?
- 报错“配置项[linkConfig.createBackendLinks]不存在”或“配置项 [throttlingConfig.concurrentSubJobs] 不存在怎么办”?
- 新建MRS Hive连接时,提示:CORE_0031:Connect time out. (Cdm.0523) 怎么解决?
- 迁移时已选择表不存在时自动创表,提示“CDM not support auto create empty table with no column”怎么处理?
- 创建Oracle关系型数据库迁移作业时,无法获取模式名怎么处理?
- MySQL迁移时报错:invalid input syntax for integer: "true"
- 作业源端是Oracle时,运行时间过长报snapshot too old怎么解决?
- 整库迁移到Hive,报错Identifier name is too long如何处理?
- 迁移数据到DLI时有数据丢失怎么处理?
- 创建Oracle数据连接测试连通性成功,连接管理界面中测试连接失败。是什么原因?
- 作业配置表不存在时自动创建,目的端字段映射不出来怎么处理?
- 作业从旧集群导出,再导入到新的集群失败怎么解决?
- 迁移HDFS文件,报错无法获取块怎么处理?
- 创建MRS数据连接时测试连通性报下载配置文件失败错误怎么处理?
- CDM作业管理访问不了,提示网络或服务器访问异常怎么处理?
- 通过CDM从OBS迁移数据到DLI,同样的作业在新版本集群迁移失败?
- CDM迁移DWS数据报错Read timedout怎么处理?
- CDM集群Hive连接无法查询库和表的内容
- 创建FusionInsight HDFS连接报错get filesystem怎么解决?
- Mysql导入数据到DLI,快执行完时失败了提示Invoke DLI service api failed错误怎么解决?
- 作业配置添加字段,MongoDB字段映射存在问题
- DLI外表(OBS文件)迁移DWS某字段转义,带有“\”
- 执行Postgresql-to-Hive迁移作业报错“Error occurs during loader run”
- 迁移Mysql到DWS报错“Lost connection to MySQL server during query”怎么处理?
- 迁移MySql到DLI字段类型转换报错For input string:"false"怎么处理?
- 迁移MySql到DWS,TINYINT类型迁移报错
- 数据迁移前后数据量不一致是什么问题?
- 创建源数据连接,一直报错用户名和密码错误,但是实际填的没有错
- 数据库写入OBS场景,表中小驼峰命名字段,提示字段不存在
- CSV数据类型插入MySQL报错invalid utf-8 charater string ''
- 定时任务失败,检查连接器连接存在问题
- 脏数据导致CSV数据类型问题插入MySQL报错
- 写ES报timeout waiting for connection from pool错误怎么解决?
- Oracle迁移到DWS报错ORA-01555
- FTP测试连通性失败,报服务器内部错误怎么解决?
- CDM连接RDS-Mysql ,除root用户外,其他用户都报错,怎么办?
- MRS Hive,MRS Kafka,MRS Hudi数据源创建连接时IP长度校验不通过,如何处理?
- CDM转换空字符串表达式StringUtils.defaultIfEmpty不生效怎么解决?
- 当Hudi表属性和hoodie.properties文件中分区信息不一致时,会导致数据写入失败怎么解决?
- 当MySQL、Oracle、PostgreSQL作为源端时,如果作业报错“Read timed out”怎么处理?
- RDS-Mysql和开源Mysql对于date类型的范围不一致,可能导致date数据转换异常
- 通过json方式导入的作业,sql server迁移到hive,执行作业报错
- Hudi源端的作业长时间处于BOOTING状态怎么解决?
- Hudi源端作业,读Hudi作业字段映射多了一列col,作业执行失败怎么处理?
- Hudi目的端的作业自动建表报错:schema不匹配,建表失败怎么办?
- Hudi目的端的作业失败,日志报错Read Timeout怎么解决?
- Hudi目的端的作业执行卡Running,读取行数写入行数相等且不再增加怎么解决?
- Hudi目的端的作业执行卡Running,数据写入行数一直显示为0如何处理?
- Hudi目的端的作业执行Spark SQL写入Hudi失败怎么办?
- Hudi目的端的作业执行过程中,由于源端连接闪断、超时或主动终止连接导致作业执行失败怎么处理?
- 文档下载
- 通用参考
链接复制成功!
通过CDM节点批量创建分表迁移作业
适用场景
业务系统中,数据源往往会采用分表的形式,以减少单表大小,支持复杂的业务应用场景。
在这种情况下,通过CDM进行数据集成时,需要针对每张表创建一个数据迁移作业。您可以参考本教程,通过数据开发模块的For Each节点和CDM节点,配合作业参数,实现批量创建分表迁移作业。
本教程中,源端MySQL数据库中存在三张分表,分别是mail01、mail02和mail03,且表结构一致,数据内容不同。目的端为MRS Hive服务。
操作前提
- 已创建CDM集群。
- 已经开通了MRS Hive服务。
- 已经在MRS Hive服务中创建了数据库和表。
创建连接
- 登录DataArts Studio控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。
- 找到所需要的工作空间,单击工作空间的“数据集成”,系统跳转至数据集成页面。
- 单击CDM集群“操作”列的“作业管理”,进入作业管理界面。
- 单击“连接管理->驱动管理”,参考管理驱动,上传MySQL数据库驱动。
- 选择“连接管理 > 新建连接”,新建MySQL连接。连接器类型选择“MySQL”,然后单击“下一步”配置连接参数,参数说明如表1所示。配置完成后,单击“保存”回到连接管理界面。
表1 MySQL数据库连接参数 参数名
说明
取值样例
名称
连接的名称,根据连接的数据源类型,用户可自定义便于记忆、区分的连接名。
mysql_link
数据库服务器
配置为要连接的数据库的IP地址或域名。
单击输入框后的“选择”,可获取用户的MySQL数据库实例列表。
192.168.0.1
端口
配置为要连接的数据库的端口。
3306
数据库名称
配置为要连接的数据库名称。
dbname
用户名
待连接数据库的用户。该数据库用户需要有数据表的读写权限,以及对元数据的读取权限。
cdm
密码
用户名密码。
-
使用本地API
可选参数,选择是否使用数据库本地API加速。
创建MySQL连接时,CDM会自动尝试启用MySQL数据库的local_infile系统变量,开启MySQL的LOAD DATA功能加快数据导入,提高导入数据到MySQL数据库的性能。注意,开启本参数后,日期类型将不符合格式的会存储为0000-00-00,更多详细信息可在MySQL官网文档查看。
如果CDM自动启用失败,请联系数据库管理员启用local_infile参数或选择不使用本地API加速。
如果是导入到RDS上的MySQL数据库,由于RDS上的MySQL默认没有开启LOAD DATA功能,所以同时需要修改MySQL实例的参数组,将“local_infile”设置为“ON”,开启该功能。
说明:
如果RDS上的“local_infile”参数组不可编辑,则说明是默认参数组,需要先创建一个新的参数组,再修改该参数值,并应用到RDS的MySQL实例上,具体操作请参见《关系型数据库用户指南》。
是
使用Agent
Agent功能待下线,无需配置。
-
Agent
Agent功能待下线,无需配置。
-
local_infile字符集
MySQL通过local_infile导入数据时,可配置编码格式。
utf8
驱动版本
不同类型的关系数据库,需要适配不同的驱动。
-
单次请求行数
可选参数,单击“显示高级属性”后显示。
指定每次请求获取的行数,根据数据源端和作业数据规模的大小配置该参数。如果配置过大或过小,可能影响作业的时长。
1000
单次提交行数
可选参数,单击“显示高级属性”后显示。
指定每次批量提交的行数,根据数据目的端和作业数据规模的大小配置该参数。如果配置过大或过小,可能影响作业的时长。
-
连接属性
可选参数,单击“添加”可增加多个指定数据源的JDBC连接器的属性,参考对应数据库的JDBC连接器说明文档进行配置。
常见配置举例如下:- connectTimeout=360000与socketTimeout=360000:迁移数据量较大、或通过查询语句检索全表时,会由于连接超时导致迁移失败。此时可自定义连接超时时间与socket超时时间(单位ms),避免超时导致失败。
- tinyInt1isBit=false或mysql.bool.type.transform=false:MySQL默认开启配置tinyInt1isBit=true,将TINYINT(1)当作BIT也就是Types.BOOLEAN来处理,会将1或0读取为true或false从而导致迁移失败,此时可关闭配置避免迁移报错。
- useCursorFetch=false:CDM作业默认打开了JDBC连接器与关系型数据库通信使用二进制协议开关,即useCursorFetch=true。部分第三方可能存在兼容问题导致迁移时间转换出错,可以关闭此开关;开源MySQL数据库支持useCursorFetch参数,无需对此参数进行设置。
- allowPublicKeyRetrieval=true:MySQL默认关闭允许公钥检索机制,因此连接MySQL数据源时,如果TLS不可用、使用RSA公钥加密时,可能导致连接报错。此时可打开公钥检索机制,避免连接报错。
sslmode=require
引用符号
可选参数,连接引用表名或列名时的分隔符号,参考对应数据库的产品文档进行配置。
'
单次写入行数
指定单次批量写入的行数,当写入行数累计到单次批量提交行数时提交一次,该值应当小于单次提交行数。
100
- 再次选择“连接管理 > 新建连接”,新建MRS Hive连接。连接器类型选择“MRS Hive”,然后单击“下一步”配置连接参数,参数说明如表2所示。配置完成后,单击“保存”回到连接管理界面。
图1 配置MRS Hive连接
表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导出目录时,如果需要创建快照,这里配置的用户需要HDFS系统的管理员权限。
如果要创建MRS安全集群的数据连接,不能使用admin用户。因为admin用户是默认的管理页面用户,这个用户无法作为安全集群的认证用户来使用。您可以创建一个新的MRS用户,然后在创建MRS数据连接时,“用户名”和“密码”填写为新建的MRS用户及其密码。说明:
- 如果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或CloudTable),并且既有KERBEROS认证模式又有SIMPLE认证模式,只能使用STANDALONE模式。
说明:
STANDALONE模式主要是用来解决版本冲突问题的运行模式。当同一种数据连接的源端或者目的端连接器的版本不一致时,存在jar包冲突的情况,这时需要将源端或目的端放在STANDALONE进程里,防止冲突导致迁移失败。
EMBEDDED
是否使用集群配置
您可以通过使用集群配置,简化Hadoop连接参数配置。
否
创建样例作业
创建数据开发作业
- 单击工作空间的“数据开发”,进入DataArts Studio数据开发模块。
- 创建子作业“分表作业”,选择CDM节点,节点属性中作业类型配置为“创建新作业”,并将步骤2中复制的作业JSON粘贴到“CDM作业消息体”中。
图6 配置CDM作业消息体
- 编辑“CDM作业消息体”。
- 由于源表有三个,分别为mail001、mail002、mail003,因此需要将作业JSON中的“fromJobConfig.tableName”属性值配置为“mail${num}”,即源表名是通过参数配置。如下图所示:
图7 编辑JSON
- 由于数据迁移作业名不能重复,因此修改JSON中作业名称“name”属性值配置为“mail${num}”,目的是创建多个CDM集成作业,避免作业名称重复。如下图所示:
说明:
如果需要创建分库的作业,也可将作业JSON中的源连接修改为变量,方便替换。
图8 编辑JSON
- 由于源表有三个,分别为mail001、mail002、mail003,因此需要将作业JSON中的“fromJobConfig.tableName”属性值配置为“mail${num}”,即源表名是通过参数配置。如下图所示:
- 添加作业参数num,用于作业JSON中调用。如下图所示:
图9 添加作业参数num
添加完成后单击“保存并提交版本”,以保存子作业。
- 创建主作业“集成管理”,选择For Each节点,每次循环调用分表作业,分别将参数001、002、003传递给子作业,生成不同的分表抽取任务。
关键配置如下:
- 子作业:选择“分表作业”
- 数据集:[['001'],['002'],['003']]
- 子作业参数:@@#{Loop.current[0]}@@
说明:
此处子作业参数的EL表达式需要添加@@。如果不加@@包围,数据集001会被识别为1,导致源表名不存在的问题。
如下图所示:
图10 配置关键参数配置完成后单击“保存并提交版本”,以保存主作业。
- 创建主作业和子作业完成后,通过测试运行主作业“集成管理”,检查数据集成作业创建情况。运行成功后,创建并运行CDM子作业成功。
图11 查看作业创建情况
注意事项
- 由于CDM版本不同,某些属性可能不支持,比如fromJobConfig.BatchJob。当创建任务报错时,需要在请求体中删除该属性。如下图所示:
图12 修改属性
- CDM节点配置为创建作业时,节点运行会检测是否有同名CDM作业。
- 如果CDM作业未运行,则按照请求体内容更新同名作业。
- 如果同名CDM作业正在运行中,则等待作业运行完成。此时该CDM作业可能被其他任务启动,可能会导致数据抽取不符合预期(如作业配置未更新、运行时间宏未替换正确等),因此请注意不要启动或者创建多个同名作业。