⌘CtrlK
Appearance
Appearance
现象:阻塞组件处理超过 1 万条数据时,作业运行缓慢或卡死。
解决步骤:
调大“处理集大小”(Commit Size):
在作业的“通用配置”中找到“处理集大小”,从默认 1000 增大到 5000 或 10000(需内存充足)。
确保 DI server 内存足够:调整 diserver/config/jvm_options 中的 -Xms 和 -Xmx。
若数据量极大(数十万):考虑拆分作业,分批处理。
现象:数据同步非常慢,每秒仅几条;或作业内存溢出。
解决步骤:
根据数据量调整处理集大小:
小数据量(<1万)可设为 1000~2000。
大数据量(>10万)可设为 5000~10000,同时观察内存。
在目标数据库 JDBC URL 中开启批处理:
MySQL:添加 rewriteBatchedStatements=true
PostgreSQL:添加 reWriteBatchedInserts=true
监控 DI server 内存,若 OOM 则调小处理集或增加内存。
现象:Excel 中的整数(如 123)导入数据库后变成 123.0。
解决步骤:
在 Excel 输入组件中,将字段类型明确指定为 String(不要使用 Number)。
在后续添加“字段选择”组件,将该字段类型转换为 Integer 或 Long。
或使用 JavaScript 组件处理:value.intValue() 转换为整数。
现象:在转换 A 中设置了变量,但在转换 B 中使用时值为空。
解决步骤:
确保变量作用域正确:同一个作业流内的转换之间传递变量,需通过“获取变量”组件,且变量名完全一致。
检查变量设置顺序:设置变量必须在获取变量之前执行。
使用“结果记录”组件:若需要跨作业流传递,可先将结果写入临时表,再读取。
示例:
转换1:表输入(查询最大值)→ 设置变量(max_id)
转换2:获取变量(max_id)→ 表输入(select * from table where id > ${max_id})
编排:转换1 → 转换2详细参考示例:分页循环抽取数据
现象:在作业通用配置中勾选了“指标日志”并填写了名称,但任务实例的“查看数据量”为空。
解决步骤:
确认作业已提交到调度并执行成功:试运行不记录指标日志。
检查指标日志名称:不要包含特殊字符,建议只使用字母、数字和下划线。
在作业调度-任务实例中查看:点击对应任务实例的“查看数据量”,应有记录。