CDM避坑指南之脏数据归档
CDM避坑指南之脏数据归档
问题场景:
利用CDM数据进行文件到表的迁移时,任务失败。经查看失败任务日志显示:The number of error records exceeds the maximum。
原因分析:
CDM解析文件类数据使用英文逗号作为默认的字段分隔符,\n作为默认的换行符(用户也可以在作业配置中进行自定义)。当源端某些行数据与目的端数据库表结构很可能是不匹配,就会出现上述报错。不匹配的原因有很多:源端某个字段內部含有换行符导致CDM解析数据提前换行;某一行数据有缺失等等。
解决办法:
CDM主打异构数据迁移,为了解决上述问题开发了脏数据归档功能。脏数据的定义就是源端与目的端不匹配的数据。用户在作业配置第三步点击高级配置,进而配置脏数据归档功能,配置信息如下图所示。这个功能可以将脏数据归档到用户指定的OBS桶中,使得迁移作业不会因为这些数据的出现而中断。
1. Source Job Configuration,高级属性配置相关信息,具体操作如下。
字段分隔符、换行符配置图:
1)在Source Job Configuration里配置高级属性
2)填写Line Separator(\n作为默认的换行符)
3)填写Field Delimiter(英文逗号作为默认的字段分隔符)
2. 作业配置第三步高级属性配置,配置脏数据归档,具体操作如下。
配图:
(1) 在高级属性设置里,是否写入脏数据选填是
(2) 配置脏数据写入连接(在连接管理界面配置具体连接信息)
(3) 配置OBS桶(写入脏数据的OBS桶的名称)
(4) 配置脏数据目录(OBS上存储脏数据的目录,只有在配置了脏数据目录的情况下才会记录脏数据。用户可以进入脏数据目录,查看作业执行过程中处理失败的数据或者被清洗过滤掉的数据,针对该数据可以查看源数据中哪些数据不符合转换、清洗规则。)
(5) 设置单个分片的最大错误记录数(单个map的错误记录超过设置的最大错误记录数则任务自动结束,已经导入的数据不支持回退。推荐使用临时表作为导入的目标表,待导入成功后再改名或合并到最终数据表。)
总结:
CDM文件到表迁移时难免受脏数据干扰,导致迁移任务失败。为了规避脏数据干扰,配置任务时在高级属性配置(是否写入脏数据选填是)脏数据归档相关信息。
- 点赞
- 收藏
- 关注作者
评论(0)