Kettle是一款國外開源的ETL工具,純Java編寫,可以在Window、Linux、Unix上運行,綠色無需安裝,數據抽取高效穩定。
業務模型: 在關系型數據庫中有張很大的數據存儲表,被設計成奇偶庫存儲,每個庫100張一模一樣的表,每張表存儲1000W,自動切換到下一個表。現需要同步這個數據到Hive中(hdfs),循環抽取這些數據。如果是抽取增量的帶上增量字段(每天增量數據存儲在哪個表,奇數庫還是偶數庫是不知道的)。
a sqoop直接從MySQL到hive,這樣有些特殊字符會導致sqoop異常終止。而且這樣循環對服務器的數據庫大量取數,對服務器壓力很大,很容易導致服務器癱瘓。
b 使用kettle處理轉換過程就沒有這樣的問題。kettle支持分頁取數據,一定程度上減輕服務器壓力。
1 先看總結構圖(以下版本為5.1)
2 設置環境變量
3 : JavaScript代碼
編輯內容為
var count;
count = parent_job.getVariable("V_ID");
if(count == 10){
false;
}else{
count++;
parent_job.setVariable("V_ID", count);
true;
}
4 新建轉換
編輯轉換,內容為:
5 dummy 條件判斷,不作修改
設置循環邏輯,箭頭方向和類型很重要
6 執行job,測試循環。
另外附上3.2版本的kettle循環
設置變量
設置判斷條件
轉換 表輸入文件輸出
Js判斷
來源:http://blog.csdn.net/lili72/article/details/39716455