1. 程式人生 > >kettle中做查詢時,遇到大資料時怎麼處理

kettle中做查詢時,遇到大資料時怎麼處理

kettle中做查詢時,遇到大資料時怎麼辦?
在kettle常常有處理從一個源資料中做轉換.做轉換的時候, 需要去查另一個數據庫. 

這種問題遇到資料小時候還好辦. 但是資料魘 時候就麻煩來了.

下面針對三種情況做具體情況的選擇辦法

先上一個圖

[img]

[/img]

1. 當需要轉換的資料特別大的時候, 例如: 10W條以上.或者100W條以上時.

   上圖中,hadoop資料匯入,匯入的資料如果夠多,例如100W條以上,其中一個欄位需要查詢資料庫中查詢,而這個欄位的型別並不多,例如只有10個型別或者資料庫中就只有這10個型別.那麼,可以走線路2, 並且線路2中的 "使用快取" 可以打勾,也可以不打.當然你這個源裡的資料太多,打上當然最好了.因為省得再去你的資料庫裡再查.

    
    但是當源裡的資料型別還是隻有10個型別,但是你的資料庫裡面存了有10000條記錄時,怎麼辦?
  有兩種解決辦法: 
       1).線路2:並且查詢節點中的 "使用快取" 不能打勾.
       2).線路1,並在"帶條件的結果查詢供流查詢使用" 這個結點中,用一個SQL,過濾一下資料,然後儘可能地把那裡包括的這些記錄查出來.這樣在流裡的比對時.也很快很多.必竟是在記憶體裡做運算了


2. 查另一個數據庫的資料量大時,而你的源資料不大.

    最好的選擇是
     線路1,並在"帶條件的結果查詢供流查詢使用" 這個結點中,用一個SQL,過濾一下資料,然後儘可能地把那裡包括的這些記錄查出來.這樣在流裡的比對時.也很快很多.必竟是在記憶體裡做運算了


3. 當兩個資料來源都非常大時(最不想遇到的)
   這種情況是最不想遇到的辦法
    一種選擇:
     1).線路2中的 "使用快取" 打勾.


當然還有別的更復雜但是會更快的辦法.適用場景比較少,不再詳細寫了.