すべてのプロダクト
Search
ドキュメントセンター

Tablestore:OTSStream Reader実行時に発生する可能性のあるエラー

最終更新日:Dec 28, 2024

このトピックでは、OTSStream Readerの実行時に発生する可能性のあるエラーとそのトラブルシューティング方法について説明します。

エラーメッセージ:"Must set date or time range millis or time range string, please check your config"

問題の説明

OTSStream Readerの実行時に、「Must set date or time range millis or time range string, please check your config」というエラーメッセージが表示されます。次の図は、エラーメッセージを示しています。

fig_setdate

考えられる原因

OTSStream Readerの構成スクリプトで、増分データのタイムスタンプ範囲を指定するパラメータが構成されていません。

解決策

次のいずれかの方法を使用して、増分データのタイムスタンプ範囲を指定します。

  • parameter.dateパラメータを、エクスポートする増分データの日付に設定します。

  • parameter.startTimestampMillisパラメータを増分データのタイムスタンプ範囲の開始タイムスタンプに設定し、parameter.endTimestampMillisパラメータを増分データのタイムスタンプ範囲の終了タイムスタンプに設定します。

増分データのタイムスタンプ範囲の構成方法の詳細については、増分データをOSSに同期するを参照してください。

エラーメッセージ:"The stream of data table is not enabled"

問題の説明

OTSStream Readerの実行時に、「The stream of data table is not enabled」というエラーメッセージが表示されます。次の図は、エラーメッセージを示しています。fig_datatablestream

考えられる原因

OTSStream Readerのparameter.tableパラメータで指定されたデータテーブルで、Stream機能が無効になっています。

解決策

次のいずれかの方法を使用して、OTSStream Readerのparameter.tableパラメータで指定されたデータテーブルで、Stream機能を有効にします。

Tablestoreコンソールを使用する

  1. テーブルの管理ページに移動します。

    1. Tablestoreコンソールにログインします。

    2. ページの上部で、リソースグループとリージョンを選択します。

    3. 概要ページで、インスタンスの名前をクリックします。

    4. インスタンスの詳細タブのテーブルタブで、管理するテーブルの名前をクリックします。

  2. トンネルタブのテーブルの管理ページで、ストリーム情報の横にある有効にするをクリックします。

    fig_streamopen

  3. ストリームを有効にするダイアログボックスで、ログの有効期限パラメータを構成し、有効にするをクリックします。

Tablestore SDKを使用する

次のTablestore SDKを使用して、UpdateTableオペレーションを呼び出し、データテーブルの構成を変更できます。

エラーメッセージ:"As expiration time is xx, so the start timestamp must greater than xx"

問題の説明

OTSStream Readerの実行時に、「As expiration time is xx, so the start timestamp must greater than xx」というエラーメッセージが表示されます。次の図は、エラーメッセージを示しています。

fig_greaterthan

考えられる原因

増分ログのタイムスタンプ範囲の開始タイムスタンプを指定するstartTimeパラメータが、ログの有効期限に基づいて正しく構成されていません。

解決策

同期スクリプトのstartTimeパラメータを、次の式を使用して取得した値よりも大きい値に設定します:同期タスクの開始時刻 - ログの有効期限 + 10分

ログの有効期限を表示するには、次の手順を実行します。

  1. テーブルの管理ページに移動します。

    1. Tablestoreコンソールにログインします。

    2. ページの上部で、リソースグループとリージョンを選択します。

    3. 概要ページで、インスタンスの名前をクリックします。

    4. インスタンスの詳細タブのテーブルタブで、管理するテーブルの名前をクリックします。

  2. テーブルの管理ページの基本情報タブで、ログの有効期限を表示します。

    image

エラーメッセージ:"To avoid timing error between different machines, the end timestamp must smaller than xx"

問題の説明

OTSStream Readerの実行時に、「To avoid timing error between different machines, the end timestamp must smaller than xx」というエラーメッセージが表示されます。次の図は、エラーメッセージを示しています。fig_smallerthan

考えられる原因

endTimeパラメータの値が無効です。

解決策

同期スクリプトのendTimeパラメータを、次の式を使用して取得した値よりも小さい値に設定します:同期タスクの開始時刻 - 5分

エラーメッセージ:"The item of column must be map object"

問題の説明

OTSStream Readerの実行時に、「The item of column must be map object」というエラーメッセージが表示されます。次のサンプルコードは、エラーメッセージの例を示しています。

[code:OTSStreamReaderError,messageOTSStreamReaderError]-com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException:Parsecolumnfail,pleasecheckyourconfig.-com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException:Parsecolumnfail,pleasecheckyourconfig.
atcom.alibaba.datax.plugin.reader.otsstreamreader.internal.config.OTSStreamReaderConfig.parseConfigForSingleVersionAndUpdateOnlyMode(OTSStreamReaderConfig.java:178)
atcom.alibaba.datax.plugin.reader.otsstreamreader.internal.config.OTSStreamReaderConfig.load(OTSStreamReaderConfig.java:267)
atcom.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReader$Job.init(OTSStreamReader.java:30)
atcom.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:1083)
atcom.alibaba.datax.core.job.JobContainer.init(JobContainer.java:497)
atcom.alibaba.datax.core.job.JobContainer.start(JobContainer.java:220)
atcom.alibaba.datax.core.Engine.start(Engine.java:100)
atcom.alibaba.datax.core.Engine.entry(Engine.java:318)
atcom.alibaba.datax.core.Engine.main(Engine.java:351)
Causedby:java.lang.IllegalArgumentException:Theitemofcolumnmustbemapobject,pleasecheckyourinput.

考えられる原因

parameter.columnパラメータの形式が無効です。

解決策

parameter.columnパラメータが正しい形式であることを確認します。次のサンプルコードは、形式の例を示しています。

  • 無効な形式

    "column":[
      "col1",
      "col2"
    ]
  • 有効な形式

    "column":[
      {
    
         "name" : "col1"
    
      },
      {
    
         "name" : "col2"
    
      }
    ]