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运行
关于开源
不足之处,请轻喷。欢迎志同道合的道友一起完善,谢谢~