0

tfileinputdelimited コンポーネントと tmap があり、その結果が csv ファイルを作成する tfileoutdelimited に渡されます。

現在、ジョブの途中でデータのロードが失敗し、宛先ファイルがロールバックされることがあります。リソースと時間の浪費につながります。途中でジョブが失敗すると、渡されたデータが保存状態になり、次にジョブが実行されたときに失敗した時点からのみ再開するように、誰でもアプローチの方法を提供できますか。

4

1 に答える 1

1

tFileOutputDelimitedに書き込んでいる場合、Talendはプロセスをロールバックしません。空の出力ファイルを取得した場合は、ジョブが途中で終了し、出力バッファーにレコードが書き込まれなかったことを意味します。ファイルへの書き込み中にエラーが発生した場合、次のコード (tFileOutputDelimited によって生成) は outputBuffer を閉じ、エラーの前に正常に挿入されたデータをフラッシュします。

...
} finally {
    if (outtFileOutputDelimited_1 != null) {
        outtFileOutputDelimited_1.flush();
        outtFileOutputDelimited_1.close();
    }
    ...
}
...

Talendには実際の「再開」機能はありませんが、次のようにジョブで独自のダイと再開プロセスを作成できます:

tFileInput1 ==> tHashOutput

tFileInput2 = メイン => tMap ==> tFileOutput1
tHashInput =lookup=> tMap

tFileInput1 : ジョブの最後の実行によって生成されたデータを読み取り、tHashOutput でメモリに格納されます tFileInput2 : 入力ファイルを読み取ります
tFileOutput1 : 出力データ
を格納します

tMap で、tFileInput1 と tHashInput の間に内部結合を作成します。次に、出力スキーマに対して、catch lookup inner join rejectを選択して、tHashInput にないすべてのレコードを処理します。

リソースと時間を節約できるかどうかはわかりません。エラーを管理する最善の方法は、エラーを特定し、ジョブ内のすべてのチェックを行ってエラーを回避することです。

より明確にするために、ジョブを実行したときに発生するエラーの例を挙げていただけますか?

于 2013-02-06T08:11:58.587 に答える