天天看點

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql<==>Mysql)6測試(Mysql<==>ES5.x)7測試(Mysql<==>Hive2)8測試(Kafka2.11<==>ES5.x)9記錄問題

文章目錄

  • 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的表中。轉換過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

6.2Es->Mysql

采用的是将表中資料轉換為json格式的資料,再通過Rest client進行Post請求往Es中輸入資料。轉換過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

6.3優化

考慮到可能需要輪詢的方式,因而加入js腳本的方式,判斷總頁碼條件每次page++。工作過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

7測試(Mysql<==>Hive2)

7.1Hive->Mysql

同Mysql互相導入,直接可以選擇hive2的連接配接輸入就行。轉換過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

7.2Mysql->Hive

同Mysql互相導入,直接可以選擇hive2的連接配接輸出就行。轉換過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

7.3優化

由于Mysql導入hive預設直連方式十分緩慢,而且會有格式問題,是以采取直接将Mysql資料寫入hive該表的hdfs路徑,提升效率明顯。轉換、工作過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題
Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

8測試(Kafka2.11<==>ES5.x)

8.1Kafka->Es

由于kettle已經內建了kafka的consumer以及producer,這裡就可以直接使用kettle的Streaming中的Kafka consumer,但需要consumer元件需要加一個transformation,這邊加上流處理的以及日志列印即可,這邊提取到kafka的資訊後還是用的rest将消息發post請求給es。轉換過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題
Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

8.2Es->Kafka

同理,這裡使用的是kafka producer,直接使用rest發get請求擷取es中的資料轉換為json直接導入kafka特定的主題即可。轉換過程如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

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附件如下:

Kettle8.2學習和測試1介紹2存儲方式3自帶設計4組成5測試(Mysql&lt;==&gt;Mysql)6測試(Mysql&lt;==&gt;ES5.x)7測試(Mysql&lt;==&gt;Hive2)8測試(Kafka2.11&lt;==&gt;ES5.x)9記錄問題

繼續閱讀