CDM迁移DWS数据报错Read timedout怎么处理?
问题描述
客户使用cdm迁移DWS A集群表数据到DWS B集群,成功写入部分后报错:
org.postgresql.util.PSQLException: Database connection failed when ending copy…….caused by: java.net.SocketTimeoutExcepetion:Read timed out;
故障分析
作业配置中源端目标端均通过where语句多条件过滤,并非索引列,查询会全表扫描,且数据量在上亿行,数据量庞大,导致JDBC数据库连接失败,读取数据超时,进而导致sqoop异常,作业失败。
迁移作业是CDM作为客户端先从源数据中抽取部分数据,写到目标端,再进行下一次部分数据抽取,写入目标端,往复执行,直到抽取到写入完成。因此可以添加高级属性:socketTimeout 参数,保证在每次抽取写入数据间隔,CDM一直保持正常会话。
解决方案
通过增大jdbc连接超时时间的控制,重新迁移作业。
- 通过作业配置中的源端和目标端连接名称,进入到cdm作业管理—>连接管理,找到该连接器名称。
- 编辑连接器,显示高级属性—>连接属性—>添加:属性名称socketTimeout 值:36000(单位为秒),测试连接,保存。
- 重新启动作业,等待迁移任务执行成功。