ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework システム構築・運用ガイド
トラブル発生時にトラブルの現象を再現したい場合や,集計・分析結果を再度確認したい場合など,特定の時間だけデータを再入力してクエリを実行したいときにクエリの再実行をします。
クエリの再実行には,sdptplputコマンドを使用します。再実行する対象のデータとして,タプルログファイルに取得した入力タプルの情報を使用します。コマンドを実行すると,タプルログファイルに取得したタプル情報から,タプルが入力ストリームキューに再投入されます。また,タプルの再投入が終了したあと,すべての入力ストリームキューに対してputEndメソッドが実行され,クエリグループが初期化されます。
クエリの再実行の結果は,sdptpllsコマンドを使用してタプルログに取得した出力ストリームキューのタプル情報を表示して確認します。
クエリを再実行し,実行結果を確認する場合のデータの流れを次の図に示します。
図4-2 クエリの再実行のデータの流れ
- sdptplputコマンドを実行して(タプルログAを指定),タプルを再投入します。
- 投入したタプルに対し,クエリが再実行されます。
- sdptpllsコマンドを実行して(タプルログBを指定),タプル情報を確認します。
クエリを再実行できる範囲,クエリを再実行する手順,およびクエリを再実行するときの注意事項について説明します。
- <この項の構成>
- (1) クエリを再実行できる範囲
- (2) クエリを再実行する手順
- (3) クエリを再実行するときの注意事項
クエリの再実行は,サーバモードの場合とデータソースモードの場合で再実行できる範囲が異なります。再実行できる範囲を次に示します。
- サーバモードの場合
クエリの実行
- データソースモードの場合
タイムスタンプ調整からクエリの実行まで
タイムスタンプ調整の機能については,「11.8 タプルのタイムスタンプの調整」を参照してください。
取得したタプルログファイルを使用してクエリを再実行します。クエリの再実行は,タプルログを取得した環境と異なる環境でも実行できますが,デフォルト文字コードが同じ環境で実行してください。
なお,この例では,クエリの再実行をする環境はタプルログを取得した環境と異なる環境とします。
- クエリを再実行する環境に必要なファイルをコピーします。
再実行するクエリグループのクエリ定義ファイル,クエリグループ用プロパティファイルおよびタプルログファイルを,タプルを取得した環境から再実行する環境にコピーします。
- タプルログを取得するための設定をします。
クエリグループ用プロパティファイルのtpl.outputTriggerパラメーターにBUFFERを指定し,出力ストリームキューのタプルログを取得するようにします。また,サーバモードで取得したタプルログファイルを使用する場合だけ,stream.tupleLogModeパラメーターにtrueを指定します。
- 再実行するクエリグループを登録します。
sdpcqlコマンドで再実行するクエリグループを登録します。
- 再実行するクエリグループを開始します。
sdpcqlstartコマンドで再実行するクエリグループを開始します。
- クエリを再実行します。
sdptplputコマンドでタプルログファイルからタプルを再投入し,クエリを再実行します。
- 結果を確認します。
出力ストリームキューのタプルログファイルの内容をsdptpllsコマンドで表示し,結果を確認します。
sdpcqlコマンド,sdpcqlstartコマンド,sdptplputコマンド,またはsdptpllsコマンドについては,「7. コマンド」の「sdpcql(クエリグループの登録)」,「sdpcqlstart(クエリグループの開始)」,「sdptplput(タプルの再投入)」,または「sdptplls(タプル情報の表示)」を参照してください。
(3) クエリを再実行するときの注意事項
- アダプターが最初に投入したタプル以外のタプルから再投入してクエリを再実行した場合,その結果はアダプターを使用してクエリを実行した結果と異なることがあります。
- sdptplputコマンドは,タプルを再投入する間隔を再現しないため,入力ストリームキューでキューあふれが発生する場合があります。キューあふれが発生した場合の動作は,サーバモードまたはデータソースモードで異なります。
- サーバモードの場合
再投入に失敗したタプルを-intervalオプションに指定した間隔で再投入します。このとき,メッセージKFSP42005-EおよびKFSP52003-Eが出力されますが,クエリの再実行には影響しません。
- データソースモードの場合
キューあふれが発生するとクエリグループが閉塞し,クエリの再実行に失敗します。そのため,-intervalオプションおよび-countオプションを使用してタプルを再投入する間隔と個数を調整してください。
- sdptplputコマンドの実行中はアダプターを起動しないでください。アダプターを起動した場合,次のようになります。
- 入力アダプターを起動した場合
再投入したタプルと入力アダプターが投入したタプルが混在してしまい,クエリを再実行した結果が入力アダプターを使用してクエリを実行した結果と異なります。
- 出力アダプターを起動した場合
出力ストリームキューのキューあふれが発生し,クエリグループが閉塞するおそれがあります。
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.