kettle中做查詢時,遇到大資料時怎麼處理
阿新 • • 發佈:2019-01-09
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中的 "使用快取" 打勾.
當然還有別的更復雜但是會更快的辦法.適用場景比較少,不再詳細寫了.
在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中的 "使用快取" 打勾.
當然還有別的更復雜但是會更快的辦法.適用場景比較少,不再詳細寫了.