2013-02-06 71 views
0

我有一個tfileinputdelimited組件和一個tmap,結果傳遞給tfileoutdelimited創建一個csv文件。Talend加載失敗,導致回滾

現在在作業的中間有時數據加載失敗導致目標文件回滾。 它會造成資源浪費和時間浪費。 任何人都可以提供一種方法,以便一旦某個作業在兩者之間失敗,以便傳遞的數據將進入保存狀態,並在下一次作業運行時再次從故障點開始。

回答

1

在tFileOutputDelimited中寫入時,Talend不會回滾進程。如果您的輸出文件爲空,這意味着您的作業過早死亡,並且沒有記錄寫入輸出緩衝區。 如果在文件中寫入中發生了錯誤,然後將下面的代碼(由tFileOutputDelimited生成)關閉OutputBuffer中並刷新錯誤前成功插入的數據:

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

有沒有真正的「恢復」功能在Talend,但你可以在工作中建立自己的模具&恢復過程如下:

tFileInput1 ==> tHashOutput

tFileInput2 =主=> TMAP ==> tFileOutput1
tHashInput =查找=> TMAP

tFileInput1:讀你的工作的最後一次運行產生的數據,並存儲在內存中tHashOutput tFileInput2:讀取輸入文件
tFileOutput1:存儲輸出數據
tHashInput:在內存中,供應讀取數據作爲tMap中的查找

在您的tMap中,在tFileInput1和tHashInput之間創建一個內部聯接。然後,對於您的輸出模式,請選擇catch查找內部聯接拒絕以處理所有不在tHashInput中的記錄。

不確定它會節省資源和時間。管理錯誤的最好方法是識別它們並在工作中進行所有檢查以避免它們發生!

爲了更加清晰,您可以舉一個運行作業時發生的錯誤示例嗎?