本文介绍了OTSStreamReader运行时可能出现的问题,请根据实际问题排查处理错误。
OTSStreamReader运行时出现“Must set date or time range millis or time range string, please check your config”错误
- 问题现象
OTSStreamReader运行时出现“Must set date or time range millis or time range string, please check your config”错误,如下图所示。
- 可能原因
OTSStreamReader配置脚本中缺少增量数据时间范围的配置。
- 解决方案
请通过以下方式配置增量数据范围。
- 通过parameter.date参数配置导出数据的日期。
- 通过parameter.startTimestampMillis和parameter.endTimestampMillis参数分别配置开始导出的时间点和结束导出的时间点。
关于增量数据范围配置的更多信息,请参见增量同步(脚本模式)。
OTSStreamReader运行时出现“The stream of data table is not enabled”错误
- 问题现象
OTSStreamReader运行时出现“The stream of data table is not enabled”错误,如下图所示。
- 可能原因
OTSStreamReader中配置的表格存储数据表(parameter.table)未开启Stream。
- 解决方案
请通过以下方式为OTSStreamReader中配置的表格存储数据表开启Stream。
- 登录表格存储控制台后,在目标数据表的表管理页面中实时消费通道页签,开启Stream。
- 通过不同SDK调用UpdateTable接口修改数据表属性。更多信息,请参见UpdateTable。
OTSStreamReader运行时出现“As expiration time is xx, so the start timestamp must greater than xx”错误
- 问题现象
OTSStreamReader运行时出现“As expiration time is xx, so the start timestamp must greater than xx”错误,如下图所示。
- 可能原因
OTSStreamReader读取的增量日志存在过期时长,startTime参数配置错误。
- 解决方案
同步脚本中配置的startTime必须大于
任务启动时间-日志过期时长+10分钟
。请登录表格存储控制台后,在目标数据表的表管理页面中基本详情页签,查看日志过期时长。
OTSStreamReader运行时出现“To avoid timing error between different machines, the end timestamp must smaller than xx”错误
- 问题现象
OTSStreamReader运行时出现“To avoid timing error between different machines, the end timestamp must smaller than xx”错误,如下图所示。
- 可能原因
endTime参数配置错误。
- 解决方案
同步脚本中配置的endTime必须小于
任务启动时间 - 5分钟
。
OTSStreamReader运行时出现“配置中的源表的列个数和目的端表不一致,源表中您配置的列数是:xx大于目的端的列数是:xx ”错误
- 问题现象
OTSStreamReader运行时出现“配置中的源表的列个数和目的端表不一致,源表中您配置的列数是:xx 大于目的端的列数是:xx ”错误,如下图所示。
- 可能原因
- 当在同步脚本中未配置
"mode": "single_version_and_update_only"
(即为行模式同步)时,OTSStreamReader中parameter.column的配置会失效,实际会按照pk,colname,version,colvalue,optype
结构来同步数据。例如表格存储数据表的结构为primary key: id,name,column name: col1,col2。如果Writer中配置为
parameter.column = { id,name,col1,col2 }
,则实际同步的结构为schema = { id,name,colname,version,colvalue,optype }
。此时会出现“源表中您配置的列数是:6 大于目的端的列数是:4”错误。 - 当在同步脚本中配置了
"mode": "single_version_and_update_only"
(即为列模式同步)时,请检查OTSStreamReader中的parameter.column和Writer中的parameter.column配置列个数是否不一致。
- 当在同步脚本中未配置
- 解决方案
在OTSStreamReader的parameter中增加
"mode": "single_version_and_update_only"
配置,并确保OTSStreamReader中的parameter.column和Writer中的parameter.column配置列个数一致。
OTSStreamReader运行时出现“The item of column must be map object”错误
- 问题现象
OTSStreamReader运行时出现“The item of column must be map object”错误,示例如下:
[ code:OTSStreamReaderError, messageOTS Stream Reader Error] - com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: Parse column fail, please check your config. - com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: Parse column fail, please check your config. at com.alibaba.datax.plugin.reader.otsstreamreader.internal.config.OTSStreamReaderConfig.parseConfigForSingleVersionAndUpdateOnlyMode(OTSStreamReaderConfig.java:178) at com.alibaba.datax.plugin.reader.otsstreamreader.internal.config.OTSStreamReaderConfig.load(OTSStreamReaderConfig.java:267) at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReader$Job.init(OTSStreamReader.java:30) at com.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:1083) at com.alibaba.datax.core.job.JobContainer.init(JobContainer.java:497) at com.alibaba.datax.core.job.JobContainer.start(JobContainer.java:220) at com.alibaba.datax.core.Engine.start(Engine.java:100) at com.alibaba.datax.core.Engine.entry(Engine.java:318) at com.alibaba.datax.core.Engine.main(Engine.java:351) Caused by: java.lang.IllegalArgumentException: The item of column must be map object, please check your input.
- 可能原因
OTSStreamReader中parameter.column配置的格式错误。
- 解决方案
请确保parameter.column的配置正确。配置示例如下:
- 错误示例
"column":[ "col1", "col2" ]
- 正确示例
"column":[ { "name" : "col1" }, { "name" : "col2" } ]
- 错误示例