SpringBoot集成Kettle,并支持拓展插件

最近项目中需要用到kettle做数据库定时同步,kettle是拥有自己的可视化界面的。但是我们的需求是是把他集成到自己的项目中,自己制作一个web界面。

首先kettle的依赖国内maven仓库好像没有(我没找到),我们可以去下载kettle的软件,从lib文件夹中获取我们需要的jar包

官网地址:下载地址

下载后可以解压,得到这样的文件目录:

我们只是为了获取jar包,从lib文件夹下获取主要的核心jar

 

 

 

在项目中新建一个lib文件夹,将这三个jar拷入并添加

 在pom文件里添加

        <!-- kettle -->
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-core</artifactId>
            <version>${kettle.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/kettle-core-8.2.0.7-719.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>kettle-engine</artifactId>
            <version>${kettle.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/kettle-engine-8.2.0.7-719.jar</systemPath>
        </dependency>
        <dependency>
            <groupId>pentaho-kettle</groupId>
            <artifactId>metastore</artifactId>
            <version>${kettle.version}</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/lib/metastore-8.2.0.7-719.jar</systemPath>
        </dependency>

systemPath根据自己导入的jar包的版本

版本管理:

    <!-- 声明版本 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <kettle.version>8.2.0.7-719.jar</kettle.version>
    </properties>

其它依赖,有的也不是完全的,记不清楚了,运行时根据报错可以得知。

        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.12.0</version>
        </dependency>

        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.18.0-GA</version>
            <scope>compile</scope>
        </dependency>

        <!-- kettle的其他依赖 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-vfs2</artifactId>
            <version>2.2</version>
        </dependency>

        <dependency>
            <groupId>commons-pool</groupId>
            <artifactId>commons-pool</artifactId>
            <version>1.6</version>
        </dependency>

        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.0</version>
        </dependency>

        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.1</version>
        </dependency>

        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

关于如何使用,有两位博主写的非常好,这里大家可以去参考一下:手把手教你使用Kettle JAVA API进行数据抽取_Tylili的博客-CSDN博客

ETL之kettle进行二次开发简单demo_千生百世,缘起缘灭,皆已注定。-CSDN博客_kettle 二次开发

然后我在使用的时候需要用到Oracle数据库,由于这个数据库是收费的,Maven仓库没有,所以需要自己下载驱动,

可以放到lib文件夹下

除了Oracle之外,还需要用到clickhouse,这时候就发现了一个问题,kettle是不支持clickhouse的,但是提供了方法案例,可以将写好的程序打成jar包(这里是直接在网上找到的jar)放入plugins文件夹下,但是我们的需求不是让可视化界面支持,而是在项目中支持,网上寻求答案都没找到,突然一个尝试,发现可以设置插件的目录。

maven:

        <dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.2.4</version>
            <exclusions>
                <exclusion>
                    <groupId>com.google.guava</groupId>
                    <artifactId>guava</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.4</version>
        </dependency>

如果使用了swagger,可能会导致包冲突,需要排除guava这个包。

其它:关于连不上clickhouse:

        1.修改配置文件允许远程连接:<listen_host>::</listen_host>

        2.由于clickhouse是安装在linux下的,所以检查端口是否开放

        3.如果只是测试和学习,不想开放端口那么可以关闭防火墙

继续:

自己新建一个目录:

在初始化环境之前:

 添加上:

String path = Thread.currentThread().getContextClassLoader().getResource("").getPath() + "/plugins/clickhouse-plugins";

获取到路径之后:

            // 设置插件路径
            System.setProperty("KETTLE_PLUGIN_BASE_FOLDERS", path);

注意不要写全路径,要写相对路径,那样只能在你的电脑上跑跑而已,项目换了位置打了包就用不了了!!!

加上之后,就支持了clickhouse数据库,其它数据库类似。

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
引用\[1\]中提到了在Spring Boot项目中集成Kettle的操作步骤。首先需要安装Kettle客户端,并创建项目并引入相关的jar包。然后,在Kettle的安装目录下执行命令以启动Kettle服务。接着,需要在安装目录下的pwd文件夹中配置访问Kettle的用户名和密码信息。启动后,可以通过访问http://127.0.0.1:8080/来查看Kettle作业和转换的执行结果日志。在项目的application-local.yaml文件中,还需要配置Kettle调用的地址、端口号、用户名、密码等信息。\[1\] 引用\[2\]中提到了在项目的pom文件中添加Kettle的依赖。这些依赖包括kettle-core、kettle-engine和metastore等。需要将这些依赖的jar包放入项目的lib文件夹中。\[2\] 至于操作界面的具体实现,可以根据项目需求进行定制。可以使用Spring Boot提供的Web界面来展示Kettle的操作界面,也可以自定义界面来与Kettle进行交互。具体的实现方式可以根据项目的具体情况来选择和设计。 #### 引用[.reference_title] - *1* [springboot集成kettle9](https://blog.csdn.net/weixin_42342164/article/details/124782267)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [SpringBoot集成Kettle,并支持拓展件](https://blog.csdn.net/L990616_ss/article/details/121492014)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值