原创文章,转载请注明出处:http://qq85609655.iteye.com/blog/2173882
在kettle.properties中,可以定义参数
KETTLE_JOB_LOG_DB=dw1 KETTLE_JOB_LOG_TABLE=bi_etl_job_log_table KETTLE_TRANS_LOG_DB=dw1 KETTLE_TRANS_LOG_TABLE=bi_etl_trans_log_table
来全局设置,记录kettle的job和trans日志,
记录日志,会进行锁表,在kettle作业非常多的情况下,容易造成表锁,以及队列等待job日志记录的情况严重影响效率。以及作业的调度。
在trans下有个步骤Set Variables,用于设定变量。
写了个job测试,
发现,trans日志能够正常记录,但是job日志无法记录。
很纳闷,百思不得其解。想不通,以为是版本的问题,更新到最新版本pdi-ce-5.2.0.0-209,问题依旧。
难道,Kettle的设计Set Variables设置变量,其变量只能用于trans,无法用于job吗?
难道需要每个job都要如上的去进行手动设置嘛,太麻烦了,不想这么搞。
打开Eclipse,查看Kettle源码,跟踪了半天,发现了具体的原因,不知道是不是kettle的Bug,还是因为其使用的思想,修改下源代码,测试了下问题搞定。
我使用的kettle 4.4的版本,需要修改类JobEntryJob.java的方法
public JobMeta getJobMeta(Repository rep, VariableSpace space) throws KettleException { JobMeta jobMeta = null; try { switch(specificationMethod) { case FILENAME: jobMeta = new JobMeta((space != null ? space.environmentSubstitute(getFilename()) : getFilename()), rep, null); break; case REPOSITORY_BY_NAME: if (rep != null) { String realDirectory = environmentSubstitute(getDirectory()); RepositoryDirectoryInterface repositoryDirectory = rep.loadRepositoryDirectoryTree().findDirectory(realDirectory); if (repositoryDirectory==null) { throw new KettleException("Unable to find repository directory ["+Const.NVL(realDirectory, "")+"]"); } jobMeta = rep.loadJob((space != null ? space.environmentSubstitute(getJobName()) : getJobName()), repositoryDirectory, null, null); // reads } else { throw new KettleException("Could not execute job specified in a repository since we're not connected to one"); } break; case REPOSITORY_BY_REFERENCE: if (rep != null) { // Load the last version... // jobMeta = rep.loadJob(jobObjectId, null); } else { throw new KettleException("Could not execute job specified in a repository since we're not connected to one"); } break; default: throw new KettleException("The specified object location specification method '"+specificationMethod+"' is not yet supported in this job entry."); } if (jobMeta != null) { jobMeta.setRepository(rep); jobMeta.copyVariablesFrom(this); } return jobMeta; } catch (Exception e) { throw new KettleException("Unexpected error during job metadata load", e); } }
主要添加了代码jobMeta.copyVariablesFrom(this);用于设定添加上个步骤的Set Variables里的变量。
重新运行job,搞定
以后,就可以将每个大job,复杂的job运行日志记录到单独的表中。方面查看job运行情况。
将重新编译后的JobEntryJob.class重新打包到kettle-engine.jar中,Ok!
如果遇到同学刚好使用4.4版本的同学,可以直接将附件中的JobEntryJob.class.zip解压后,替换kettle-engine.jar中相应的类。
特别提醒,Kettle 5.x版本和Kettle 4.x版本,变化较大,需要根据实际类的方法进行修改。这里,我只贴了Kettle 4.4修改的代码,至于其它版本,同学们可以自己动手。
相关推荐
在Kettle中,每个转换或作业都可以单独配置其日志记录方式,包括日志级别、日志格式、存储位置等。这种灵活性虽然强大,但对于大型项目来说,频繁的手动配置过程不仅耗时,还可能因疏忽导致日志丢失或错误。因此,...
设置好文件路径、字段和格式,确保日志记录的完整性和可读性。 在实际应用中,这种遍历结果集的方法非常灵活,可以应用于各种场景,例如数据分析、报告生成、数据验证等。需要注意的是,处理大量数据时,应合理优化...
7. **异常处理和日志记录**:确保Kettle的错误和日志信息能够正确地被Spring Boot的日志系统捕获和记录,以便于问题排查。 通过以上步骤,我们可以将Kettle的强大数据处理能力无缝融入到Spring Boot应用中,实现...
因此,了解Kettle的错误日志和调试机制至关重要,以便快速定位并解决问题。同时,配合SQL脚本和预定义的工作流文件(kjb、ktr),可以实现自动化数据处理流程。 总之,Kettle提供了一系列丰富的控件,使得数据处理...
4. **错误处理和日志记录**:由于Kettle的API可能会抛出异常,因此需要适当的错误处理。同时,为了调试和监控,确保配置了日志框架,如Log4j。 5. **测试和优化**:在集成后,进行详尽的测试以确保所有功能正常运行...
2. **日志和异常处理**: 确保所有操作都有日志记录,并处理可能出现的异常情况,例如作业失败时的邮件通知。 3. **监控与报警**: 实现作业执行的实时监控,当作业超时或出现错误时,及时发送报警信息。 4. **版本...
4. **错误处理和日志记录**:Kettle提供了丰富的错误处理机制,可以通过监听器接口(如`TransListener`和`JobListener`)捕获执行过程中的异常。同时,Kettle的日志系统可以帮助跟踪和记录执行过程,可以通过实现`...
6. **错误处理和日志记录**:Kettle的错误处理机制和日志记录对于调试和监控ETL过程至关重要。源码中可以学习到如何实现这些功能。 7. **并行和分布式处理**:Kettle支持并行和分布式执行,源码中会涉及到多线程和...
6. **第三方工具库**:Kettle可能会依赖一些第三方库,如`log4j.jar`用于日志记录,`pentaho-kettle-plugins-ktr.jar`,`pentaho-kettle-plugins-formats-meta.jar`等,这些库提供了特定的功能,如读写特定格式的...
6. **错误处理和日志记录**:Kettle提供了详细的日志记录和错误处理机制,这对于调试和优化数据处理流程至关重要。 通过研究Kettle 9.0的源码,开发者可以了解如何实现一个高效、可扩展的数据集成工具,同时也能...
4. **错误处理和日志记录**:Kettle具有强大的错误处理机制,可以捕获和记录错误信息,便于调试和优化。5.4版本可能强化了这方面的功能,提供了更精细的错误报告和日志选项。 5. **分布式处理和并行执行**:Kettle...
2. **guava-19.0.jar**:Google的Guava库提供了许多Java核心库的实用工具类,如集合、缓存、并发工具、原生类型支持、字符串处理、I/O等,是Kettle运行时的重要依赖。 3. **drools-core-5.0.1.jar**:Drools是基于...
9. **日志和监控**:Kettle支持详细的日志记录和实时监控,帮助用户跟踪数据处理过程并诊断问题。 10. **插件系统**:Kettle的开放架构允许用户或第三方开发者扩展其功能,开发新的步骤或工具。 总的来说,Kettle-...
- 错误处理:确保在集成中包含适当的错误处理机制,如日志记录和异常捕获。 - 性能优化:监控和调整Kettle的运行参数,如并发执行的Transformation数量,以提高整体性能。 综上所述,Kettle与Java的集成为大数据...
系统中,kettle的相关配置,全部放在基本面参数配置中,其中,kettle的日志级别需要调整到详细日志级别,这样可以详细的追踪kettle的异常信息。 本文档提供了在Linux系统下使用kettle工具的操作手册,包括在Windows...
这个管理界面可能允许用户创建、编辑、调度和监控ETL作业与转换,同时提供用户权限管理和日志记录等功能。 2. **pentaho-kettle-master.zip**:这是Pentaho Kettle项目的主分支源代码,Pentaho是Kettle的商业版本,...
由Java编写,可以在Windows、Linux和Unix等多种操作系统上运行,以其高效稳定的数据抽取能力而闻名。Kettle无需安装,提供图形化的用户界面,使得用户可以通过拖拽方式创建数据处理流程,简化了ETL的复杂性。 ...
8. **错误处理和日志记录**:为保证生产环境的稳定性,应设置适当的错误处理机制,如错误日志记录和错误数据的隔离处理。 通过以上步骤,Kettle可以高效地批量解析XML文件并导入到Oracle数据库,满足生产环境中的...