ETL工具Pentaho Kettle的transformation和job集成

1.      Kettle

1.1.      
简介

Kettle是一款国外开源的etl工具,纯java编写,数据抽取高效稳定(数据迁移工具)。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

2.      集成开发

2.1.      
transformation
实现解析

// 初始化Kettle环境,加载配置
KettleEnvironment.init();
//文件路径及文件名
String filename=”/foo/bar/trans.ktr”;
//解析transformation文件
TransMeta transmeta = new TransMeta(filename);
//加载transformation
Trans trans = new Trans(transmeta);
//在独立线程中执行transformation,“null”可以用参数集替代
trans.execute(null);
//等待transformation执行完毕
trans.waitUntilFinished();
//获取执行结果
Result  result=trans.getResult();

2.2.      
job
实现解析

// 初始化Kettle环境,加载配置
KettleEnvironment.init();
//文件路径及文件名
String filename=”/foo/bar/jobn.kjb”;
//解析job文件,不使用资源库
JobMeta jobmeta=new JobMeta(filename, null,null);
//加载job
Job job=new Job(null, jobmeta);
//在独立线程中执行job 
job.start();
//等待job执行完毕
job.waitUntilFinished();
//获取执行结果
Result result=job.getResult();

2.3.      基于资源库集成

// 初始化Kettle环境,加载配置
KettleEnvironment.init();
//资源库类型插件初始化
PluginRegistry.init();
//资源库对象实例化
Repository repository=null;
RepositoriesMeta repositoriesMeta = new RepositoriesMeta();
//读取资源库
repositoriesMeta.readData();
//遍历资源库
/*
for ( int i = 0; i < repositoriesMeta.nrRepositories(); i++ ) {
RepositoryMeta rinfo = repositoriesMeta.getRepository( i );
System.out.println( "#"+ ( i + 1 ) + " : " + rinfo.getName() + " [" + rinfo.getDescription() + "]  id=" + rinfo.getId() );
}
*/
//根据资源库名称“1.0”查找资源库
RepositoryMeta repositoryMeta = repositoriesMeta.findRepository( "1.0" );
// 获取PluginRegistry实例
PluginRegistry registry = PluginRegistry.getInstance();
//加载资源库
repository = registry.loadClass(RepositoryPluginType.class,repositoryMeta, Repository.class);
//资源库初始化
repository.init(repositoryMeta);
//获取资源库路径
RepositoryDirectoryInterface directory = repository.loadRepositoryDirectoryTree();
// JobMeta实例化
JobMeta jobmeta = new JobMeta();
//解析资源库的job文件
jobmeta = repository.loadJob("job2", directory, null, null);
//job实例化
Job job = null;
//加载资源库job
job = new Job(repository, jobmeta);
//在独立线程中执行job 
job.start();
//等待job执行完毕
job.waitUntilFinished();
//获取执行结果
Result result=job.getResult();

2.4.      
日志集成

日志输出准备:

// FileLoggingEventListener实例化
FileLoggingEventListener fileLoggingEventListener=null;
//tran.log文件追加日志,true表示追加,false表示不追加
fileLoggingEventListener=new FileLoggingEventListener( "tran.log", true );

运行结果日志输出:

//获取结果集
Map<String,ResultFile> map=result.getResultFiles();
//遍历运行结果,并输出日志文件
for(String key:map.keySet()){
//获取ResultFile对象
ResultFile rf=map.get(key);
//创建日志通道
LogChannelInterface log = new LogChannel( "运行结果" );
//输出日志到日志文件
log.logBasic(rf.getFile().getName().toString());
时间: 2024-10-23 02:27:03

ETL工具Pentaho Kettle的transformation和job集成的相关文章

开源ETL工具之Kettle介绍

What 起源 Kettle是一个Java编写的ETL工具,主作者是Matt Casters,2003年就开始了这个项目,最新稳定版为7.1. 2005年12月,Kettle从2.1版本开始进入了开源领域,一直到4.1版本遵守LGPL协议,从4.2版本开始遵守Apache Licence 2.0协议. Kettle在2006年初加入了开源的BI公司Pentaho, 正式命名为:Pentaho Data Integeration,简称"PDI". 自2017年9月20日起,Pentaho

etl工具,kettle实现循环

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行,绿色无需安装,数据抽取高效稳定. 业务模型: 在关系型数据库中有张很大的表,被设计成奇偶库存储,每个库100张一模一样的表,每张表存储1000W,字段切换到下一个表.现需要同步这个数据到hive中(hdfs),循环抽取这些数据.如果是抽取增量的带上增量字段(每天增量数据存储在哪个表,奇数库还是偶数库是不知道的). a sqoop直接从mysql到hive,这样有些特殊字符会导致sqoop异常终

可用于Hadoop下的ETL工具——Kettle

看大家分享了好多hadoop相关的一些内容,我为大家介绍一款ETL工具——Kettle.    Kettle是pentaho公司开源的一款ETL工具,跟hadoop一样,也是java实现,其目的就是做数据整合中时数据的抽取(Extract).转换(Transformat).加载(Load)工作.Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制.Transformation工作原理上采用并发流式处理

Kettle定时执行(ETL工具)【转】

1,Kettle跨平台使用.    例如:在AIX下(AIX是IBM商用UNIX操作系统,此处在LINUX/UNIX同样适用),运行Kettle的相关步骤如下:    1)进入到Kettle部署的路径    2)执行 chmod *.sh,将所有shell文件添加可执行权限    3)在Kettle路径下,如果要执行transformation,就运行./pan.sh -file=?.ktr -debug=debug -log=log.log    其中.-file说明你要运行的transfor

大数据之ETL工具Kettle的--1功能介绍

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window.Linux.Unix上运行. 说白了就是,很有必要去理解一般ETL工具必备的特性和功能,这样才更好的掌握Kettle的使用.我这里啊,先描述ETL工具的通用功能,再来描述作为ETL工具其中的一种(Kettle)是如何来提供这些功能的(图文详解) ETL工具的功能之一:连接 任何ETL工具都应该有能力连接到类型广泛的数据源和数据格式.对于最常用的关系型数据库系统,还要提供本地的连接方式(如对于Oracle的OCI),ETL

六种 主流ETL 工具的比较(DataPipeline,Kettle,Talend,Informatica,Datax ,Oracle Goldengate)

六种 主流ETL 工具的比较(DataPipeline,Kettle,Talend,Informatica,Datax ,Oracle Goldengate) 比较维度\产品 DataPipeline kettle Oracle Goldengate informatica talend DataX 设计及架构 适用场景 主要用于各类数据融合.数据交换场景,专为超大数据量.高度复杂的数据链路设计的灵活.可扩展的数据交换平台 面向数据仓库建模传统ETL工具 主要用于数据备份.容灾 面向数据仓库建模

Sqool与kettle开源的ETL工具

数据抽取的开源工具 一个是RDBMS 一个是基于分布式的数据ETL工具 ==================== 原则: 主要是映射规则,基础字典数据,详细数据 注意与ESB的编程模型的差异(编程思想上)

etl学习系列1——etl工具安装

ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少,这里我介绍一个我在工作中使用了3年左右的ETL工具Kettle,本着好东西不独享的想法,跟大家分享碰撞交流一下!在使用中我感觉这个工具真的很强大,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取.质量检测.数据清洗.数据转换.数据过滤等方面有着比较稳定的表现,

集团公司(嵌入ETL工具)财务报表系统解决方案

集团公司(嵌入ETL工具)财务报表系统解决方案 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包括:金矿.铜矿.房产.化纤等.由于子公司在业务上的差异,子公司的财务报表也存在很多不同之处.因此,各个子公司需要根据自己的情况,制作符合自己个性化需求的报表模版,然后再部署到集团服务器进行统一管理. 集团使用的是SAP,所有子公司正是因这个系统而产生大量数据且这些数据保存在一起.此外,各子公司也有一些自己的系统,所以各自也会产生一些数据. 出于数据安全等因