基于spring-boot的kettle调度 - 简书

标签: | 发表时间:2018-04-13 17:22 | 作者:
出处:https://www.jianshu.com

大家好,我是帅气小伙,由于最近公司项目辗转大数据,需要做数据抽取的工作,kettle是目前比较成熟的ETL工具,而传统的kettle客户端在任务调度这方面没有实现,于是在网上寻找开源的kettle调度项目。

kettle-manager
专门为kettle这款优秀的ETL工具开发的web端管理工具。貌似源码跑起来比较费劲,各种缺包,于是我为大家专门整理了一下这个项目。全maven管理的
https://github.com/konglinghai123/kettle
如果想学习kettle的可以用我的github项目运行,毕竟我在群里天天发现都有人因为无法运行项目而提问。

kettle的集成

由于kettle-manager是一个完整的web项目,功能也比较多,但是实际应用中,只需用到几个关键的点,就能够实现kettle的web调度。因此我们需要把kettle的调度从项目中分离出来,这样才能够更好地集成到自己的项目中去。于是我觉得将它抽出来,基于spring-boot,具体的业务也分离出来,kettle作为一个组件。

renren-kettle

项目说明

  • renren_kettle是修改了kettle-manager的源码的项目,由于马老师的项目基于EVOA,不便于系统的集成,所以将部分重要功能转接到spring-boot,
    具体操作kettle的sql仍然是beetl的,具体的代码带 kettle 这个模块,而其他业务代码你可以选择mybatis去实现。
  • renren_kettle是搭建在renren_fast的基础上的,这个框架如何使用,请看这个开源项目的文档

项目实现功能

  • 作业的列表(非实时),启动,停止,终结,删除,结束 (VJobController)
  • 基于websocket的实时日志 (KettleLogListener)
  • 前端代码,忙着找工作,没有实现,请各位自行完善

项目结构

      renren-fast
├─doc  项目SQL语句
│
├─kettle 马老师的 kettle api调用都在这里
├─common 公共模块
│  ├─aspect 系统日志
│  ├─exception 异常处理
│  ├─validator 后台校验
│  └─xss XSS过滤
│ 
├─config 配置信息
│ 
├─modules 功能模块
│  ├─api API接口模块(APP调用)
│  ├─job 定时任务模块
│  ├─kettle kettle相关的业务
│  ├─oss 文件服务模块
│  └─sys 权限模块
│ 
├─RenrenApplication 项目启动类
│  
├──resources 
│  ├─mapper SQL对应的XML文件
│  ├─static 第三方库、插件等静态资源
│  └─views  项目静态页面


实时websocket的接入例子

      <script type="text/javascript">
    var websocket = null;
    $(document).ready(function(){
        //判断当前浏览器是否支持WebSocket
        if('WebSocket' in window){
            //${path} 是jsp的标签
            websocket = new WebSocket("ws://${path}/kettle/log");
        }
        else{
            alert('Not support websocket')
        }
        //连接发生错误的回调方法
        websocket.onerror = function(){
            setMessageInnerHTML("error");
        };

        //连接成功建立的回调方法
        websocket.onopen = function(event){
            var message = $("#jobId").val()+"-"+"open";
            websocket.send(message);

        }

        //接收到消息的回调方法
        websocket.onmessage = function(event){
            setMessageInnerHTML(event.data);
        }

        //连接关闭的回调方法
        websocket.onclose = function(){
            closeWebSocket();
        }

        //监听窗口关闭事件,当窗口关闭时,主动去关闭websocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
        window.onbeforeunload = function(){
            websocket.close();
        }

    });

    //关闭连接
    function closeWebSocket(){
        websocket.close();
    }

    //将消息显示在网页上
    function setMessageInnerHTML(innerHTML){
        document.getElementById('message').innerHTML += innerHTML +"\r\n"+"***********************************************************************>"+"\r\n";
    }

    function removeAll() {
        $("#message").html("");
    }
</script>


部署指南

  • doc有2个数据库
    kettle.sql (kettle 5.4的资源库),有一张表是自己加的,CrTask-定时任务表,这里面有一条固定的记录,用于定时获取kettle的日志,然后发到websocket。
    renren_fast.sql (renren 开源项目的业务数据库)

  • kettle的配置文件 resources/kettle.properties

  • renren项目的配置都在application.yml

如需加入项目,请邮件 823894716@qq.com

相关 [spring boot kettle] 推荐:

基于spring-boot的kettle调度 - 简书

- -
大家好,我是帅气小伙,由于最近公司项目辗转大数据,需要做数据抽取的工作,kettle是目前比较成熟的ETL工具,而传统的kettle客户端在任务调度这方面没有实现,于是在网上寻找开源的kettle调度项目. 专门为kettle这款优秀的ETL工具开发的web端管理工具. 貌似源码跑起来比较费劲,各种缺包,于是我为大家专门整理了一下这个项目.

Spring boot传统部署

- - 企业架构 - ITeye博客
使用spring boot很方便,一个jar包就可以启动了,因为它里面内嵌了tomcat等服务器. 但是spring boot也提供了部署到独立服务器的方法. 如果你看文档的话,从jar转换为war包很简单,pom.xml的配置修改略去不讲. 只看source的修改,很简单,只要一个配置类,继承自SpringBootServletInitializer, 并覆盖configure方法.

值得使用的Spring Boot

- - ImportNew
2013年12月12日,Spring发布了4.0版本. 这个本来只是作为Java平台上的控制反转容器的库,经过将近10年的发展已经成为了一个巨无霸产品. 不过其依靠良好的分层设计,每个功能模块都能保持较好的独立性,是Java平台不可多得的好用的开源应用程序框架. Spring的4.0版本可以说是一个重大的更新,其全面支持Java8,并且对Groovy语言也有良好的支持.

Spring Boot配置多个DataSource

- - 廖雪峰的官方网站
使用Spring Boot时,默认情况下,配置 DataSource非常容易. Spring Boot会自动为我们配置好一个 DataSource. 如果在 application.yml中指定了 spring.datasource的相关配置,Spring Boot就会使用该配置创建一个 DataSource.

Spring boot executable jar/war 原理

- - ImportNew
spring boot里其实不仅可以直接以 Java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来启动,比如./demo.jar. 把这个executable jar/war 链接到/etc/init.d下面,还可以变为Linux下的一个service. 只要在spring boot maven plugin里配置:.

spring boot与spring batch、postgres及elasticsearch整合

- - 互联网 - ITeye博客
当系统有大量数据需要从数据库导入elasticsearch时,使用sping batch可以提高导入的效率. 这篇文章使用spring batch将数据从postgres导入elasticsearch. 本文使用spring data jest连接ES(也可以使用spring data elasticsearch连接ES),ES版本为5.5.3.

Spring Boot使用redis做数据缓存

- - ITeye博客
SysUser.class)); //请注意这里. 3 redis服务器配置. /** *此处的dao操作使用的是spring data jpa,使用@Cacheable可以在任意方法上,*比如@Service或者@Controller的方法上 */ public interface SysUserRepo1 extends CustomRepository {.

spring boot应用启动原理分析

- - ImportNew
在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server. 如果之前没有使用过spring boot可以通过下面的demo来感受下. 下面以这个工程为例,演示如何启动Spring boot项目:.

Apache Shiro和Spring boot的结合使用

- - 企业架构 - ITeye博客
实际上在Spring boot里用Spring Security最合适,毕竟是自家东西,最重要的一点是Spring Security里自带有csrf filter,防止csrf攻击,shiro里就没有. 但是Spring Security有点太复杂,custmize起来比较费力,不如shiro来的简单.

spring boot + redis 实现session共享

- - 编程语言 - ITeye博客
这次带来的是spring boot + redis 实现session共享的教程. 在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下:. 而@EnableRedisHttpSession这个注解是由spring-session-data-redis提供的,所以在pom.xml文件中添加: .