本文介绍了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中配置的表格存储数据表(paramter.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运行时出现“配置中的源表的列个数和目的端表不一致,源表中您配置的列数是:xx 大于目的端的列数是:xx ”错误

  • 问题现象
    OTSStreamReader运行时出现“配置中的源表的列个数和目的端表不一致,源表中您配置的列数是:xx 大于目的端的列数是:xx ”错误,如下图所示。fig_numbererror
  • 可能原因
    • 当在同步脚本中未配置"mode": "single_version_and_update_only"(即为行模式同步)时,OTSStreamReader中paramter.columns的配置会失效,实际会按照pk,colname,version,colvalue,optype结构来同步数据。

      例如表格存储数据表的结构为primary key: id,name,column name: col1,col2。如果Writer中配置为paramter.columns = { id,name,col1,col2 },则实际同步的结构为schema = { id,name,colname,version,colvalue,optype }。此时会出现“源表中您配置的列数是:6 大于目的端的列数是:4”错误。

    • 当在同步脚本中配置了"mode": "single_version_and_update_only"(即为列模式同步)时,请检查OTSStreamReader中的paramter.columns和Writer中的paramter.columns配置列个数是否不一致。
  • 解决方案

    在OTSStreamReader的paramter中增加"mode": "single_version_and_update_only"配置,并确保OTSStreamReader中的paramter.columns和Writer中的paramter.columns配置列个数一致。