java集成kettle 9.2.0开发

kettle简介

由于 业务产生数据,三方对接数据存储在不同关系型的数据库(GreenPlum,mysql,postgresql),有的数据来自excel报表(自己开发的excel报表解析入库的项目下期介绍),对于数据整合以及数据的实效性有一定的要求,故在项目实时过程中使用了kettle工具,并用java集成使用,定时执行kettle自己生成的文件,完成自动同步功能 因为kettle确实帮助我们解决了一些问题,下面先常规尬吹一波kettle的好处:

简介:Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

  1. 全量数据迁移 ,就是将某个或多个表或库中的数据进行迁移,可以跨库,也可以同库迁移。速度比较快,性能稳定;
  2. 增量数据迁移 就是对某个表中的数据按照一定的设计思路,根据int的自增主键或datetime的时间戳实现增量数据迁移,并且可以统计增量数据量。速度比较快,性能稳定;
  3. 数据关联比对 可以将多个数据库根据一定的业务字段进行关联,尤其是针对单表百万、千万级别上的数据比对,普通sql实现困难,可以通过KETTLE方便高效的完成数据关联比对功能;
  4. 数据清洗转换可以通过KETTLE中设计一定的判断流程,在数据流中逐条对数据进行业务判断和过滤,实现数据清洗转换的功能 ;
  5. 解析JSON数据可以零代码通过jsonPath快速完成JSON数据解析,高效率实现JSON解析数据入库;

工具页面简介
笔者认为,kettle是可以0代码将多个关系型数据库或者报表数据聚合到一个大表处理的很高效的工具,下面为使用过程部分图简介




本文内容

着重讲解集成,即如何用java运行kettle脚本,至于怎么写kettle脚本,请自行查看各种傻瓜教程,或与我联系。

下载地址:点击此处

源码地址:(看了很多的教程,有一个包在本地怎么都引不进来,最后通过查看源码找到的另一个包=.=):点击此处

maven依赖

仓库地址如下仓库地址.

  <repositories><repository><id>pentaho-releases</id><name>kettle</name><url>https://nexus.pentaho.org/content/groups/omni/</url></repository></repositories>

pom依赖如下 代码片.

// An highlighted block<dependency><groupId>com.mzlion</groupId><artifactId>easy-okhttp</artifactId><version>1.0.0-Final</version></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><scope>runtime</scope></dependency><dependency><groupId>pentaho-kettle</groupId><artifactId>kettle-core</artifactId><version>9.2.0.0-290</version></dependency><dependency><groupId>com.verhas</groupId><artifactId>license3j</artifactId><version>1.0.7</version></dependency><dependency><groupId>pentaho-kettle</groupId><artifactId>kettle-engine</artifactId><version>9.2.0.0-290</version></dependency><dependency><groupId>pentaho</groupId><artifactId>metastore</artifactId><version>9.2.0.0-290</version></dependency><!-- https://mvnrepository.com/artifact/org.apache.commons/commons-vfs2 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-vfs2</artifactId><version>2.7.0</version></dependency><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.15</version></dependency><!-- https://mvnrepository.com/artifact/commons-lang/commons-lang --><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>rhino</groupId><artifactId>js</artifactId><version>1.7R3</version><exclusions><exclusion><groupId>*</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.3</version><exclusions><exclusion><groupId>*</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.15</version><exclusions><exclusion><groupId>*</groupId><artifactId>*</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>17.0</version></dependency><dependency><groupId>org.javassist</groupId><artifactId>javassist</artifactId><version>3.20.0-GA</version></dependency><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.2</version></dependency><!--本地用下面的 SNAPSHOT jekins不支持开发包故用9.4.0.0RELEASE--><dependency><groupId>org.pentaho</groupId><artifactId>pentaho-encryption-support</artifactId><version>9.4.0.0-SNAPSHOT</version></dependency><!--<dependency><groupId>org.pentaho</groupId><artifactId>pentaho-encryption-support</artifactId><version>9.4.0.0RELEASE</version></dependency>-->

resources下需要有xml

<password-encoder-plugins><password-encoder-plugin id="Kettle"><description>Kettle Password Encoder</description><classname>org.pentaho.di.core.encryption.KettleTwoWayPasswordEncoder</classname></password-encoder-plugin>
</password-encoder-plugins>

运行kettle的ktr方法,话不多说 直接贴代码


package util;import java.net.URL;public class FileUtil {/*** 获取资源文件地址* @param fullFileName* @return*/public static String getResourceFilePath(String  fullFileName){URL url = FileUtil.class.getResource(fullFileName);String path=url.getPath();return path;}
}package com.byt.mart.data;import org.junit.jupiter.api.Test;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.springframework.boot.test.context.SpringBootTest;import java.lang.reflect.Method;
import java.util.List;@SpringBootTest
class TestApplicationTests {@Testpublic void run() throws Exception {//传入kettle,可以为本地路径也可以为绝对路径String transFileName ="C:\\Users\\kettle\\Desktop\\kettle测试.ktr";callNativeTrans(transFileName);}public static void callNativeTrans(String transFileName) throws Exception {callNativeTransWithParams(null, transFileName);}/*** 调用trans文件 带参数的** @param params* @param transFileName* @throws Exception*/public static void callNativeTransWithParams(String[] params, String transFileName) throws Exception {// 初始化KettleEnvironment.init();EnvUtil.environmentInit();TransMeta transMeta = new TransMeta(transFileName);//转换Trans trans = new Trans(transMeta);//执行trans.execute(params);//等待结束trans.waitUntilFinished();//抛出异常if (trans.getErrors() > 0) {throw new Exception("There are errors during transformation exception!(传输过程中发生异常)");}}}

至于ktr如何存储则有很多方式:存在服务器上(不推荐),集成minio存储,或者存储在自己购买的服务上都可以。

最后就是使用定时任务,根据自己的需要定时执行kettle文件。

java集成kettle 9.2.0开发相关推荐

  1. 20万数据 sql 快还是 java快?_基于SpringBoot2.0开发的,轻量级的,前后分离Java开发平台...

    项目说明 MintLeaf-Fast是一个基于SpringBoot2.0开发的,轻量级的,前后端分离的Java快速开发平台 开箱即用,节省开发时间,提升开发效率,能够快速开发项目并交付的接私活利器 支 ...

  2. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    [JAVA零基础入门系列](已完结)导航目录 Day1 开发环境搭建 Day2 Java集成开发环境IDEA Day3 Java基本数据类型 Day4 变量与常量 Day5 Java中的运算符 Day ...

  3. Java集成SOX开发

    Java集成SOX开发 一.项目痛点 二.编写Dockerfile 三.代码开发 四.效果演示(例如:提取双声道录音中的右声道) windows系统 linux系统 一.项目痛点 1.项目需要做&qu ...

  4. 6.Java集成开发环境

    转载请保留原文链接: http://dashidan.com/article/java/basic/6.html 6.Java集成开发环境 工欲善其事, 必先利其器.--<论语·卫灵公篇> ...

  5. java 集成开发工具_最好的Java开发人员测试和集成工具

    java 集成开发工具 通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控. 参加AppDynamics APM导览! 无论您是刚刚起步还是已经从事了一段时间,使用正确的工具进行编程都可 ...

  6. php java集成_PHP和Java 集成开发详解分析 强强联合第1/4页

    PHP和Java 集成开发详解分析 强强联合第1/4页 更新时间:2008年11月14日 12:28:23   作者: 很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同 ...

  7. Java集成DataX开发

    Java集成DataX开发 背景 DataX 下载 集成准备 系统集成 总结 背景 最近有个项目需要将其他服务器上个的数据库数据导入到其他数据库中,有个同事推荐使用DataX工具,所以下了个DataX ...

  8. Java集成开发工具推荐

    Java集成开发工具推荐: Eclipse Eclipse是最有名也最广泛使用的Java集成开发环境(IDE),允许开发者结合语言支持和其他功能到任何的默认包中,而且Eclipse市场有许多定制和扩展 ...

  9. java 集成pageoffice_PageOffice 4.0 For Java集成使用说明

    PageOffice 4.0 For Java集成使用说明 如果新建网站或集成到您现有的网站里: 1).拷贝"集成文件"文件夹中的lib文件夹覆盖到您自己Web项目中WEB-INF ...

最新文章

  1. log4cxx体系结构
  2. linux怎么删除端口转发,linux使用rinetd快速实现端口转发
  3. Mysql 开启远程连接
  4. 论文浅尝 | 引入“引用”的语言模型
  5. IDEA——常用基础设置
  6. linux 内核编译不能打字,linux系统升级后,手动编译的kernel无法启动问题
  7. libevent evhttp学习——http服务端
  8. 生产环境CPU过高问题定位
  9. oracle 053 题库,oracle ocp 053题库讲解(232版本)
  10. 基于EEG的睡眠分期算法记录3-使用决策树多类支持向量机的自动睡眠阶段分类
  11. 合唱队形c语言编程,洛谷 P1091 合唱队形
  12. 计数器设计及仿真验证
  13. stm32—酒精传感器的初步使用
  14. (20201209已解决)从window访问wsl地址
  15. python输入直角三角形的两直角边,求周长、面积和锐角度数
  16. 《黑客狙击》--一部值得观看的国产高科技犯罪电影
  17. android 对话框 美化,Android修改Dialog样式
  18. 腾讯大讲堂之每年3万行代码,你达标了吗?
  19. 传奇私服服务器怎么增加npc,传奇私服装备打造NPC设置方法
  20. go swag常用注释

热门文章

  1. iOS图片占内存过大的问题完美解决
  2. Linux:rsyslog 日志丢失 messages lost due to rate-limiting
  3. 小于等于、 大于等于Mybatis 、oracle
  4. alt在计算机中代表什么,计算机中alt+enter是什么快捷键
  5. 手机接收短信验证码生成(纯数字)
  6. 算法与产品:抖音、快手的“气质”成因
  7. 古典音乐CD购买经验谈
  8. 关于性能测试的这点事,值得收藏~
  9. 显卡使用信息nvidia-smi命令
  10. 时间不够用?柳比歇夫时间管理法帮到你