kettle web化
通過Java API調用kettle核心代碼,並基於Spring Boot提供簡易的Web管理界面。
背景
在工作中,通過kettle這款ETL產品進行數據處理時,是通過kitchen命令調用kettle,會啟動一個jvm程序處理。在運行時,如果幾個任務同時跑,那么會占用比較高的內存。而且每次啟動kettle時,會先初始化運行環境。
因此,通過Java API調用kettle核心代碼,在程序啟動時只初始化一次運行環境,后續任務都提交到任務線程池處理,不需要每個任務都啟動jvm實例,能單機的提高並發。
項目地址
特點
- Java API調用Kettle核心代碼
- 任務並行執行
- Web管理任務
展示
界面用Bootstrap3和jQuery簡單擼了下。
dashboard
查看任務執行情況
任務
定義任務(目前需要指定kjb的路徑),執行任務
任務歷史
查看歷史任務,看日志
計划任務
通過定義cron表達式,計划執行任務
已實現
- Java API調用Kettle核心代碼(基於Kettle 7.1)
- kjb調用ktr
- Shell
- MySQL
- Oracle
- Hive
- JS代碼
- Java代碼
- Kettle其他功能暫未測試,目前測試覆蓋的功能如下
- 任務並行執行
- Web管理任務
- 任務監控dashboard
- 任務組(分組管理)
- 任務(任務定義,比如kjb路徑)
- 任務變量(將任務變量傳入kjb,可在kjb中、或者ktr中獲取到)
- 任務歷史(歷史任務,任務執行日志)
- 計划任務(定時調度)
暫未實現
- Web管理任務
- 任務失敗預警
- 任務失敗重試
- 更美觀、友好的界面
- 分布式任務執行、節點服務發現
說明
該系統暫未投入生產使用,想嘗試的道友不妨在測試環境試試水,或者等發布穩定版。
快速開始
本項目為Spring Boot標准項目,clone到本地修改application.yml中的數據源配置即可。
項目結構
Spring Boot標准結構,利於二次開發。
運行
- 導入IDE,運行main方法
- 執行
mvn clean spring-boot:run
- 打包
mvn package
,通過java -jar target/kettle-web-{version}.jar
運行
關於開源
不足之處,請輕噴。歡迎志同道合的道友一起完善,謝謝~