本文介绍了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”错误,如下图所示。

    fig_setdate
  • 可能原因

    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”错误,如下图所示。fig_datatablestream
  • 可能原因

    OTSStreamReader中配置的表格存储数据表(parameter.table)未开启Stream。

  • 解决方案
    请通过以下方式为OTSStreamReader中配置的表格存储数据表开启Stream。
    • 登录表格存储控制台后,在目标数据表的表管理页面中实时消费通道页签,开启Stream。fig_streamopen
    • 通过不同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”错误,如下图所示。

    fig_greaterthan
  • 可能原因

    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”错误,如下图所示。fig_smallerthan
  • 可能原因

    endTime参数配置错误。

  • 解决方案

    同步脚本中配置的endTime必须小于任务启动时间 - 5分钟

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"
      
           }
      ]