このトピックでは、OTSStreamReader の実行時に発生する可能性があるエラーと、そのトラブルシューティング方法について説明します。
エラーメッセージ:「Must set date or time range millis or time range string, please check your config」
問題の説明
OTSStreamReader タスクを実行すると、次のエラーメッセージが表示されます。
com.alibaba.datax.common.exception.DataXException: [ code:OTSStreamReaderError, messageOTS Stream Reader Error] – com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: Must set date or time range millis or time range string, please check your config. – com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: Must set date or time range millis or time range string, please check your config.
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.config.OTSStreamReaderConfig.load(OTSStreamReaderConfig.java:201)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReader$Job.init(OTSStreamReader.java:30)
at com.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:1085)
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)
考えられる原因
OTSStreamReader の構成スクリプトに、増分データのタイムスタンプ範囲を指定するパラメーターが設定されていません。
解決策
次のいずれかの方法で、増分データのタイムスタンプ範囲を指定します。
parameter.dateパラメーターを、エクスポートする増分データの日付に設定します。parameter.startTimestampMillisパラメーターを増分データのタイムスタンプ範囲の開始タイムスタンプに、parameter.endTimestampMillisパラメーターを増分データのタイムスタンプ範囲の終了タイムスタンプに設定します。
増分データのタイムスタンプ範囲の設定方法の詳細については、「増分データの OSS への同期」をご参照ください。
エラーメッセージ:「The stream of data table is not enabled」
問題の説明
OTSStreamReader タスクを実行すると、次のエラーメッセージが表示されます。
[ code:OTSStreamReaderError, messageOTS Stream Reader Error] – com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: The stream of data table is not enabled. – com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: The stream of data table is not enabled.
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.core.OTSStreamReaderChecker.checkStreamEnabledAndTimeRangeOK(OTSStreamReaderChecker.java:49)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderMasterProxy.init(OTSStreamReaderMasterProxy.java:38)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReader$Job.init(OTSStreamReader.java:31)
at com.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:1085)
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:321)
at com.alibaba.datax.core.Engine.main(Engine.java:354)
考えられる原因
OTSStreamReader の parameter.table パラメーターで指定されたデータテーブルのストリーム機能が無効になっています。
解決策
次のいずれかの方法で、OTSStreamReader の parameter.table パラメーターで指定されたデータテーブルのストリーム機能を有効にします。
Tablestore コンソールの使用
-
テーブル管理 ページに移動します。
Tablestore コンソール にログインします。
ページの上部で、リソースグループとリージョンを選択します。
-
概要 ページで、インスタンス名をクリックします。
-
インスタンスの詳細 タブの テーブルリスト エリアで、データテーブルの名前をクリックします。
-
テーブル管理 ページで、トンネル タブをクリックします。次に、Streamの情報 の右側にある 有効 をクリックします。
-
Stream機能を有効 ダイアログボックスで、必要に応じてログの有効期限を変更し、有効 をクリックします。
Tablestore SDK の使用
次の Tablestore SDK を使用して UpdateTable API を呼び出し、データテーブルの構成を変更できます。
エラーメッセージ:「As expiration time is xx, so the start timestamp must greater than xx」
問題の説明
OTSStreamReader タスクを実行すると、次のエラーメッセージが表示されます。
com.alibaba.datax.common.exception.DataXException: [ code:OTSStreamReaderError, messageOTS Stream Reader Error] – com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: As expiration time is 25200000, so the start timestamp must greater than 2021-09-25T20:09Z(1632600562281) – com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: As expiration time is 25200000, so the start timestamp must greater than 2021-09-25T20:09Z(1632600562281)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.core.OTSStreamReaderChecker.checkStreamEnabledAndTimeRangeOK(OTSStreamReaderChecker.java:60)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderMasterProxy.init(OTSStreamReaderMasterProxy.java:38)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReader$Job.init(OTSStreamReader.java:31)
at com.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:1085)
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:321)
考えられる原因
増分ログの開始タイムスタンプを指定する startTime パラメーターが、ログの有効期限を考慮して正しく設定されていません。
解決策
同期スクリプトの startTime パラメーターを、次の式で算出される値より大きい値を設定します: 同期タスクの開始時刻 - ログの有効期限 + 10 分。
ログの有効期限を確認するには、次の手順を実行します。
-
テーブル管理 ページに移動します。
Tablestore コンソール にログインします。
ページの上部で、リソースグループとリージョンを選択します。
-
概要 ページで、インスタンス名をクリックします。
-
インスタンスの詳細 タブの テーブルリスト エリアで、データテーブルの名前をクリックします。
-
テーブル管理 ページで 基本情報 タブをクリックすると、ログの有効期限を確認できます。
エラーメッセージ:「To avoid timing error between different machines, the end timestamp must smaller than xx」
問題の説明
OTSStreamReader タスクを実行すると、次のエラーメッセージが表示されます。
com.alibaba.datax.common.exception.DataXException: [ code:OTSStreamReaderError, messageOTS Stream Reader Error] – com.alibaba.datax.plugin.reader
.otsstreamreader.internal.OTSStreamReaderException: To avoid timing error between different machines, the end timestamp must smaller than 2021-09
-26T03:59Z(1632628796433) – com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderException: To avoid timing error between diff
erent machines, the end timestamp must smaller than 2021-09-26T03:59Z(1632628796433)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.core.OTSStreamReaderChecker.checkStreamEnabledAndTimeRangeOK(OTSStreamReaderC
hecker.java:65)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReaderMasterProxy.init(OTSStreamReaderMasterProxy.java:38)
at com.alibaba.datax.plugin.reader.otsstreamreader.internal.OTSStreamReader$Job.init(OTSStreamReader.java:31)
at com.alibaba.datax.core.job.JobContainer.initJobReader(JobContainer.java:1085)
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:321)
at com.alibaba.datax.core.Engine.main(Engine.java:354)
at com.alibaba.datax.common.exception.DataXException.asDataXException(DataException.java:41)
考えられる原因
endTime パラメーターの値が無効です。
解決策
同期スクリプトの endTime パラメーターを、次の式で算出される値より小さい値を設定します: 同期タスクの開始時刻 - 5 分。
エラーメッセージ:「The item of column must be map object」
問題の説明
OTSStreamReader の実行時に「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" } ]