admin管理员组文章数量:1641940
最近项目中需要用到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.apachemons</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.apachemons</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数据库,其它数据库类似。
本文标签: 插件SpringBootkettle
版权声明:本文标题:SpringBoot集成Kettle,并支持拓展插件 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1729330494a1196330.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论