java与kettle的集成DEMO
2016-11-15 16:45
363 查看
java集成kettle 示例:
方案:
启用定时任务,调用PDI生成的trans.ktr文件
maven仓库地址:http://maven-repository.com/artifact/pentaho-kettle
DEMO:
异常问题解决:
项目中依赖传递排除:
方案:
启用定时任务,调用PDI生成的trans.ktr文件
maven仓库地址:http://maven-repository.com/artifact/pentaho-kettle
<repository> <id>pentaho-releases</id> <url>http://repository.pentaho.org/artifactory/repo/</url> </repository> |
<kettle.version>6.1.0.1-196</kettle.version> |
<dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-core</artifactId> <version>${kettle.version}</version> </dependency> <dependency> <groupId>com.verhas</groupId> <artifactId>license3j</artifactId> <version>1.0.7 </version> </dependency> <dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-dbdialog</artifactId> <version>${kettle.version}</version> </dependency> <dependency> <groupId>pentaho-kettle</groupId> <artifactId>kettle-engine</artifactId> <version>${kettle.version}</version> </dependency> <dependency> <groupId>pentaho</groupId> <artifactId>metastore</artifactId> <version>${kettle.version}</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>19.0</version> </dependency> </dependencies> |
211-whicoDB-in_student(table) 插入更新到 localhost-whicoDB-in_student(table) 的trans文件 |
import org.pentaho.di.core.KettleEnvironment; import org.pentaho.di.core.util.EnvUtil; import org.pentaho.di.job.Job; import org.pentaho.di.job.JobMeta; import org.pentaho.di.trans.Trans; import org.pentaho.di.trans.TransMeta; /** * kettle version 6.1.0.1-196 * @author jiangnan * */ public class KettleUtil { /** * 调用trans文件 * @param transFileName * @throws Exception */ 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!(传输过程中发生异常)"); } } /** * 调用job文件 * @param jobName * @throws Exception */ public static void callNativeJob(String jobName) throws Exception{ // 初始化 KettleEnvironment.init(); JobMeta jobMeta = new JobMeta(jobName,null); Job job = new Job(null, jobMeta); //向Job 脚本传递参数,脚本中获取参数值:${参数名} //job.setVariable(paraname, paravalue); job.start(); job.waitUntilFinished(); if (job.getErrors() > 0) { throw new Exception("There are errors during job exception!(执行job发生异常)"); } } |
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.stech.business.util.KettleUtil; public class kettleTaskJob { private static Logger LOGGER = LogManager.getLogger(kettleTaskJob.class.getName()); public void run() throws Exception { LOGGER.info("*****kettle定时任务运行开始******"); String transFileName = "D:/work/kettle/trans.ktr"; KettleUtil.callNativeTrans(transFileName); LOGGER.info("*****kettle定时任务运行结束******"); } public static void main(String[] args) throws Exception { kettleTaskJob job = new kettleTaskJob(); job.run(); } } |
2016-11-15 11:47:33,856 INFO (VfsLog.java:136) - Using "C:\Users\jiangnan\AppData\Local\Temp\vfs_cache" as temporary files store. 2016/11/15 11:47:34 - trans - 为了转换解除补丁开始 [trans] 2016/11/15 11:47:37 - 表输入.0 - Finished reading query, closing connection. 2016/11/15 11:47:37 - 表输入.0 - 完成处理 (I=47, O=0, R=0, W=47, U=0, E=0) 2016/11/15 11:47:38 - 插入 / 更新.0 - 完成处理 (I=47, O=47, R=47, W=47, U=0, E=0) |
2016-11-15 13:30:41,438 INFO (VfsLog.java:136) - Using "C:\Users\jiangnan\AppData\Local\Temp\vfs_cache" as temporary files store. Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Suppliers.supplierFunction()Lcom/google/common/base/Function; at org.pentaho.di.core.extension.ExtensionPointMap.get(ExtensionPointMap.java:120) at org.pentaho.di.core.extension.ExtensionPointHandler.callExtensionPoint(ExtensionPointHandler.java:45) at org.pentaho.di.trans.TransMeta.loadXML(TransMeta.java:3368) at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2732) at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2684) at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2661) at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2641) at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2606) at org.pentaho.di.trans.TransMeta.<init>(TransMeta.java:2569) at com.stech.business.util.KettleUtil.callNativeTrans(KettleUtil.java:21) at com.stech.business.quartz.kettleTaskJob.run(kettleTaskJob.java:13) at com.stech.business.quartz.kettleTaskJob.main(kettleTaskJob.java:19) |
相关文章推荐
- Kettle与Java集成――Java代码调取运行资源库的Transformation
- Kettle与Java集成——Java代码调取运行资源库的Transformation
- Kettle与Java集成——Java代码调取运行资源库的Transformation
- Kettle与Java集成——Java代码调取运行资源库的Transformation
- Etl工具之Kettle与java集成二
- java后台开发--ssh集成demo及sping详细配置
- java应用程序中集成Kettle
- java 集成kettle
- Java集成kettle调用trans文件
- Kettle与Java集成——Java代码调取运行资源库的Transformation
- JAVA应用程序单独集成Mybatis使用Demo
- 百度地图集成Demo过程中的问题(java.lang.UnsatisfiedLinkError:)
- JCA: Java步入应用集成时代
- 将Java Document或其它文档集成到Eclipse中
- 使用 WebSphere Studio Application Developer 集成版,版本 4.1 开发 Java 消息服务应用程序
- PHP与已存在的Java应用程序集成
- TextSamplerDemo.java代码分析
- 一个集成输入查找功能的的java简单程序
- PHP与已存在的Java应用程序集成
- 集成 Struts、Tiles 和 JavaServer Faces