文章目錄
- 1介紹
- 2存儲方式
- 3自帶設計
- 4組成
- 5測試(Mysql<==>Mysql)
- 6測試(Mysql<==>ES5.x)
-
- 6.1Mysql->Es
- 6.2Es->Mysql
- 6.3優化
- 7測試(Mysql<==>Hive2)
-
- 7.1Hive->Mysql
- 7.2Mysql->Hive
- 7.3優化
- 8測試(Kafka2.11<==>ES5.x)
-
- 8.1Kafka->Es
- 8.2Es->Kafka
- 9記錄問題
-
- 9.1Kettle和ES插件版本對應問題
1介紹
Kettle是一款開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運作,綠色無需安裝,資料抽取高效穩定。
2存儲方式
(1)以XML形式存儲;
(2)以資源庫方式存儲(資料庫資源庫和檔案資源庫),這裡用mysql(5.1.73)資料庫。
3自帶設計
Kettle本身自帶Transformation(轉換)以及Job(作業)。
(1)轉換是資料流,由資料的輸入->處理邏輯->輸出;
(2)作業是步驟流,由多個步驟(可以是轉換、作業)組成。
4組成
由Spoon、Pan、Kitchen、Carte組成,Spoon是主要的工作台的圖形化的界面,Pan是用指令行的形式調用轉換,Kitchen是指令行調用作業,Carte是一個輕量級的Web容器。
5測試(Mysql<==>Mysql)
測試采用的是轉載在Linux上的5.1.73版Mysql,采用轉換的格式直接實作表的輸入->抽取字段->插入表
6測試(Mysql<==>ES5.x)
6.1Mysql->Es
采用的是Rest client 進行Get請求擷取es資料,再進行Json資料格式的解析,最後将資料插入Mysql的表中。轉換過程如下:
6.2Es->Mysql
采用的是将表中資料轉換為json格式的資料,再通過Rest client進行Post請求往Es中輸入資料。轉換過程如下:
6.3優化
考慮到可能需要輪詢的方式,因而加入js腳本的方式,判斷總頁碼條件每次page++。工作過程如下:
7測試(Mysql<==>Hive2)
7.1Hive->Mysql
同Mysql互相導入,直接可以選擇hive2的連接配接輸入就行。轉換過程如下:
7.2Mysql->Hive
同Mysql互相導入,直接可以選擇hive2的連接配接輸出就行。轉換過程如下:
7.3優化
由于Mysql導入hive預設直連方式十分緩慢,而且會有格式問題,是以采取直接将Mysql資料寫入hive該表的hdfs路徑,提升效率明顯。轉換、工作過程如下:
8測試(Kafka2.11<==>ES5.x)
8.1Kafka->Es
由于kettle已經內建了kafka的consumer以及producer,這裡就可以直接使用kettle的Streaming中的Kafka consumer,但需要consumer元件需要加一個transformation,這邊加上流處理的以及日志列印即可,這邊提取到kafka的資訊後還是用的rest将消息發post請求給es。轉換過程如下:
8.2Es->Kafka
同理,這裡使用的是kafka producer,直接使用rest發get請求擷取es中的資料轉換為json直接導入kafka特定的主題即可。轉換過程如下:
9記錄問題
9.1Kettle和ES插件版本對應問題
由于kettle8.2自帶的elasticsearch的plugins預設是es6版本的,是以需要換插件的操作,進入data-integration\plugins\elasticsearch-bulk-insert-plugin,這裡儲存的就是es的插件,需要更換lib下的所有包以及elasticsearch-bulk-insert-core-xxxx.jar,可直接從maven倉庫裡拉取如下紅框内的包替換kettle插件内,elasticsearch-bulk-insert-core-xxxx.jar附件如下: