Kettle之錯誤處理(Error Handling)裏面的坑

1 前言

在使用表輸出輸出數據到數據庫時,因數據庫約束檢查等原因造成數據無法正常入庫.這時"表輸出"步驟若是沒有定義錯誤處理的話,transformation轉換會報出異常並且停止進行運行.

爲了保證程序的正常運行,我們可以在transform安通轉換中"表輸出"步驟中定義錯誤處理.此種方式可以捕獲異常數據並持久化保存到硬盤或數據庫中,利於後期數據的分析,來提高數據質量.

2 錯誤處理設置

錯誤處理,處理步驟如下:

在可能出錯的組件上單擊鼠標右鍵,選擇Error Handling.填寫相應的信息字段,然後將錯誤信息寫入數據庫或者文件中.

入庫錯誤日誌表展示如下:

3 錯誤處理裏面的坑

然而,在轉換"表輸出"上設置錯誤處理時,會提示如下信息:

翻譯爲:警告!由於驅動程序的限制,在使用的數據庫上不完全支持與批處理結合的錯誤處理。請謹慎行事,風險自負。

也就是說當進行批處理操作時,設置錯誤處理可能會出現異常信息漏捕獲的情況.我案例中生成異常信息1692個,而實際只捕獲到168個.

而當"表輸出"操作取消批處理時(如下設置),就可以全部捕獲異常信息.然後爲了保證正確數據被處理,同時不缺失異常信息而讓每次提交的數據量設置爲1,這樣會大大降低效率.

解決方案: 創建一張和指定表結構完全相同的表,只是不設置任何數據庫約束(主鍵).然後先將數據全部接收進這張表,再在數據庫層面進行去重後插入另外一張指定的表中.這樣既可以保留所有原數據,又可以實現數據去重.

4 參考文章:

(1) Kettle中定義錯誤處理: https://blog.csdn.net/feng19821209/article/details/9120561

(2) KETTLE 執行轉換時遇到錯誤,記錄並繼續運行: https://blog.csdn.net/shenlong_no1/article/details/78819453

(3) https://wiki.pentaho.com/display/EAI/.09+Transformation+Steps#.09TransformationSteps-StepErrorHandling

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章