Skip to content
运维指南/数据开发相关问题/数据开发相关问题 - 排查与解决手册

数据开发相关问题 - 排查与解决手册

1. 数据加工相关问题

1. 阻塞组件数据量大时作业卡死 - 排查与解决手册


现象:阻塞组件处理超过 1 万条数据时,作业运行缓慢或卡死。

解决步骤

调大“处理集大小”(Commit Size):

在作业的“通用配置”中找到“处理集大小”,从默认 1000 增大到 5000 或 10000(需内存充足)。

确保 DI server 内存足够:调整 diserver/config/jvm_options 中的 -Xms 和 -Xmx。

若数据量极大(数十万):考虑拆分作业,分批处理。


2. 处理集大小设置不当导致性能低下 - 排查与解决手册


现象:数据同步非常慢,每秒仅几条;或作业内存溢出。

解决步骤

根据数据量调整处理集大小:

小数据量(<1万)可设为 1000~2000。

大数据量(>10万)可设为 5000~10000,同时观察内存。

在目标数据库 JDBC URL 中开启批处理:

MySQL:添加 rewriteBatchedStatements=true

PostgreSQL:添加 reWriteBatchedInserts=true

监控 DI server 内存,若 OOM 则调小处理集或增加内存。


3. Excel 输入数字多了 .0 - 排查与解决手册


现象:Excel 中的整数(如 123)导入数据库后变成 123.0。

解决步骤

在 Excel 输入组件中,将字段类型明确指定为 String(不要使用 Number)。

在后续添加“字段选择”组件,将该字段类型转换为 Integer 或 Long。

或使用 JavaScript 组件处理:value.intValue() 转换为整数。


2. 变量传递失败(设置变量后下游获取不到)


现象:在转换 A 中设置了变量,但在转换 B 中使用时值为空。

解决步骤

确保变量作用域正确:同一个作业流内的转换之间传递变量,需通过“获取变量”组件,且变量名完全一致。

检查变量设置顺序:设置变量必须在获取变量之前执行。

使用“结果记录”组件:若需要跨作业流传递,可先将结果写入临时表,再读取。

示例:

转换1:表输入(查询最大值)→ 设置变量(max_id)
转换2:获取变量(max_id)→ 表输入(select * from table where id > ${max_id})
编排:转换1 → 转换2

详细参考示例:分页循环抽取数据


3. 指标日志配置后无数据显示 - 排查与解决手册


现象:在作业通用配置中勾选了“指标日志”并填写了名称,但任务实例的“查看数据量”为空。

解决步骤

确认作业已提交到调度并执行成功:试运行不记录指标日志。

检查指标日志名称:不要包含特殊字符,建议只使用字母、数字和下划线。

在作业调度-任务实例中查看:点击对应任务实例的“查看数据量”,应有记录。