kettle從入門到精通 第六十六課 ETL之kettle kettle阻塞教程,輕鬆獲取最後一行資料,so easy

慕容尘轩發表於2024-06-08

場景:ETL溝通交流群內有小夥伴反饋,如何在同步一批資料完成之後記錄下同步結果呢?或者是呼叫後續步驟、儲存過程、三方介面等。

解決:使用步驟Blocking step進行阻塞處理即可。

1、下面的demo演示從表t1同步資料至表t2(t1表中有三條資料,t2為空表,兩個表表結構相同),然後資料同步完畢之後進行其他操作,這裡的只是打個日誌記錄下最後一行資料,如下圖所示:

1)從圖片日誌可以很清晰的看到,當前資料列印了三次,表輸入和表輸出也都執行了3次。

2)從圖片日誌可以很清晰的看到,Blocking step 讀取了三條資料,只寫了一條資料。

3)從圖片日誌可以很清晰的看到,Blocking step 後面的日誌步驟只列印了最後一行資料。

2、Blocking step配置,雙擊步驟開啟配置項。

Pass all rows?:若不勾選,表輸出步驟成功寫入3條資料之後只有最後一條資料才會透過Blocking step步驟傳遞給之後的步驟。如下圖所示:

3、Pass all rows?:若勾選,表輸出步驟成功寫入3條資料之後所有資料都會透過Blocking step步驟傳遞給之後的步驟。如下圖所示:

1)從圖片日誌可以很清晰的看到,Blocking step 讀取了三條資料,寫了三條資料。

2)從圖片日誌可以很清晰的看到,雖然Blocking step 寫了三條資料,但是執行順序依然是在Blocking step的前置步驟表輸出完畢之後。

4、快取大小配置,行數設定的越大,該步驟執行的效率也就越高,否則會頻繁操作臨時檔案。

上圖步驟中將快取大小設定為1,從日誌來看Blocking step步驟就列印了“開啟臨時檔案”,很顯然快取大小設定的行數太小會降低效能。這裡使用的時候根據自己的機器實際記憶體情況來定。

相關文章