字段映射界面无法显示所有列怎么处理?
问题描述
在使用CDM从HBase/CloudTable导出数据时,在字段映射界面HBase/CloudTable表的字段偶尔显示不全,无法与目的端字段一一匹配,造成导入到目的端的数据不完整。
原因分析
由于HBase/CloudTable无Schema,每条数据的列数不固定,在字段映射界面CDM通过获取样值的方式有较大概率无法获得所有列,此时作业执行完后会造成目的端的数据不全。
- 在CDM的字段映射界面增加字段。
- 在CDM的作业管理界面直接编辑作业的JSON(修改“fromJobConfig.columns”、“toJobConfig.columnList”这2个参数)。
- 导出作业的JSON文件到本地,在本地手动修改JSON文件中的参数后(原理同2相同),再导回CDM。
推荐使用方法1,下面以HBase导到DWS为例进行说明。
解决方法一:CDM的字段映射界面增加字段
- 获取源端HBase待迁移的表中所有的字段,列族与列之间用“:”分隔,例如:
rowkey:rowkey g:DAY_COUNT g:CATEGORY_ID g:CATEGORY_NAME g:FIND_TIME g:UPLOAD_PEOPLE g:ID g:INFOMATION_ID g:TITLE g:COORDINATE_X g:COORDINATE_Y g:COORDINATE_Z g:CONTENT g:IMAGES g:STATE
- 在CDM的作业管理界面,找到HBase导出数据到DWS的作业,单击作业后面的“编辑”,进入字段映射界面,如图1所示。
- 单击添加字段,在弹出框中选择“添加新字段”,如图2所示。
- 添加完字段后,新增的字段在界面不显示样值,这个不影响字段值的传输,CDM会将字段值直接写入目的端。
- 这里“添加新字段”的功能,要求源端数据源为:MongoDB、HBase、关系型数据库或Redis,其中Redis必须为Hash数据格式。
- 全部字段添加完之后,检查源端和目的端的字段映射关系是否正确,如果不正确可以拖拽字段调整字段位置。
- 单击“下一步”后保存作业。
解决方法二:修改JSON文件
- 获取源端HBase待迁移的表中所有的字段,列族与列之间用“:”分隔,例如:
rowkey:rowkey g:DAY_COUNT g:CATEGORY_ID g:CATEGORY_NAME g:FIND_TIME g:UPLOAD_PEOPLE g:ID g:INFOMATION_ID g:TITLE g:COORDINATE_X g:COORDINATE_Y g:COORDINATE_Z g:CONTENT g:IMAGES g:STATE
- 在DWS目的表中,获取与HBase表对应的字段。
- 在CDM的作业管理界面,找到HBase到DWS的作业,选择作业后面的 。
- 在CDM界面编辑作业的JSON文件。
- 修改源端的“fromJobConfig.columns”参数,配置为1获取的HBase的字段,列号之间使用“&”分隔,列族与列之间用“:”分隔,如下:
"from-config-values": { "configs": [ { "inputs": [ { "name": "fromJobConfig.table", "value": "HBase" }, { "name": "fromJobConfig.columns", "value": "rowkey:rowkey&g:DAY_COUNT&g:CATEGORY_ID&g:CATEGORY_NAME&g:FIND_TIME&g:UPLOAD_PEOPLE&g:ID&g:INFOMATION_ID&g:TITLE&g:COORDINATE_X&g:COORDINATE_Y&g:COORDINATE_Z&g:CONTENT&g:IMAGES&g:STATE" }, { "name": "fromJobConfig.formats", "value": { "2": "yyyy-MM-dd", "undefined": "yyyy-MM-dd" } } ], "name": "fromJobConfig" } ] }
- 修改目的端的“toJobConfig.columnList”参数,配置为2中DWS的字段列表。
这里的顺序必须与HBase保持一致,才能保证正确的字段映射关系,字段名之间使用“&”分隔,如下:
"to-config-values": { "configs": [ { "inputs": [ { "name": "toJobConfig.schemaName", "value": "dbadmin" }, { "name": "toJobConfig.tablePreparation", "value": "DO_NOTHING" }, { "name": "toJobConfig.tableName", "value": "DWS " }, { "name": "toJobConfig.columnList", "value": "rowkey&day_count&category&category_name&find_time&upload_people&id&infomation_id&title&coordinate_x&coordinate_y&coordinate_z&content&images&state" }, { "name": "toJobConfig.shouldClearTable", "value": "true" } ], "name": "toJobConfig" } ] }
- 其他参数保持不变,单击“保存并运行”。
- 修改源端的“fromJobConfig.columns”参数,配置为1获取的HBase的字段,列号之间使用“&”分隔,列族与列之间用“:”分隔,如下:
- 作业完成后,查询DWS表中的数据是否和HBase中的数据匹配。如果不匹配,请检查JSON文件中HBase和DWS字段的顺序是否一致。
数据集成 所有常见问题
- CDM与其他数据迁移服务有什么区别,如何选择?
- CDM有哪些优势?
- CDM有哪些安全防护?
- 如何降低CDM使用成本?
- CDM未使用数据传输功能时,是否会计费?
- 已购买包年包月的CDM套餐包,为什么还会产生按需计费的费用?
- 如何查看套餐包的剩余时长?
- CDM可以跨账户使用吗?
- CDM集群是否支持升级操作?
- CDM迁移性能如何?
- CDM不同集群规格对应并发的作业数是多少?
- 是否支持增量迁移?
- 是否支持字段转换?
- Hadoop类型的数据源进行数据迁移时,建议使用的组件版本有哪些?
- 数据源为Hive时支持哪些数据格式?
- 是否支持同步作业到其他集群?
- 是否支持批量创建作业?
- 是否支持批量调度作业?
- 如何备份CDM作业?
- 如果HANA集群只有部分节点和CDM集群网络互通,应该如何配置连接?
- 如何使用Java调用CDM的Rest API创建数据迁移作业?
- 如何将云下内网或第三方云上的私网与CDM连通?
- CDM是否支持参数或者变量?
- CDM迁移作业的抽取并发数应该如何设置?
- CDM是否支持动态数据实时迁移功能?
- 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出现迁移中断失败的问题?
- 如何处理CDM连接器报错“配置项 [linkConfig.iamAuth] 不存在”?
- 创建数据连接时报错“配置项[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"
more