ETL工具Pentaho Kettle的transformation和job集成

标签: etl 工具 pentaho | 发表时间:2015-05-15 01:11 | 作者:ronggangzhao
出处:http://blog.csdn.net

 

 

1.1.       简介

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

 

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());
作者:ronggangzhao 发表于2015/5/14 17:11:26 原文链接
阅读:59 评论:0 查看评论

相关 [etl 工具 pentaho] 推荐:

ETL工具Pentaho Kettle的transformation和job集成

- - CSDN博客推荐文章
Kettle是一款国外开源的etl工具,纯java编写,数据抽取高效稳定(数据迁移工具). Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制. 2.1.       transformation实现解析.

Pentaho 资料

- - ITeye博客
Loading Data into HBase — How to use a PDI transformation that sources data from a flat file and writes to an HBase table. Transforming Data within a Hadoop Cluster — How to transform data within the Hadoop cluster using Pentaho MapReduce, Hive, and Pig.

Loading Data into Hive - Pentaho Big Data - Pentaho Wiki

- -
Using the external option, you could define a Hive table that simply uses the HDFS directory that contains the parsed file. For this how-to, we chose not to use the external option so that you can see the ease with which files can be added to non-external Hive tables..

ETL概述(原创)

- - ITeye博客
ETL,Extraction- Transformation-Loading的缩写,即数据抽取(Extract)、转换(Transform)、装载(Load)的过程,它是构建数 据仓库的重要环节. ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为 企业的决策提供分析依据.

美图离线ETL实践

- - SegmentFault 最新的文章
美图收集的日志需要通过 ETL 程序清洗、规整,并持久化地落地于 HDFS / Hive,便于后续的统一分析处理. ETL 即 Extract-Transform-Load,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程. ETL 一词较常用在数据仓库,但其对象并不限于数据仓库.

CloverETL 3.5.0 发布,开源的 ETL 框架

- - 开源中国社区最新新闻
CloverETL 3.5.0 发布,此版本包括了之前两个里程碑版本的特性,更新内容如下:. 在社区版添加了 Hadoop 连接. ETL 是一切数据仓库应用的基础. CloverETL 是一个基于 Java 的开源的 ETL 框架,同时还包含了一个 ETL设计器——.

Kettle环境变量在ETL工程上的应用

- - 行业应用 - ITeye博客
    好久没更新博文,最近临近离职,事情少了,有空停下来总结总结这段时间的东西.     今天先记录下Kettle环境变量的应用.     一个好的环境变量的使用,在业务变更或者环境变动后,只需要很少工作量的修改即可完成. 我们把变量分成系统环境变量和业务变量,系统环境变量是指那些在ETL中指定的系统级资源配置,如数据库信息、日志文件路径等等,这些变量一旦设定,不会经常变动;业务变量指跟当前ETL执行处理的内容有关,如日期、产品ID等等,跟运行时有关.

【转】ETL中用到的一些基本技术概论

- - 行业应用 - ITeye博客
在公司做了几年的数据,跟数据打了不少的交道. 对软件的理解,也慢慢的偏向于对数据的流转上,虽然用户体验UI也占据着很大的地位. 之前答应过坛子里的朋友,准备写关于写金蝶的系列文章. 时间恍惚,匆匆几年就这样过去了. 如今,笔者历经几年,从一个大男孩,变成了美丽女孩的丈夫. 曾今,朋友说到:有些人写代码是为了一辈子都去写代码,也有些人写代码是为了不去写代码.

基于Hadoop生态圈的数据仓库实践 —— ETL(一)

- - CSDN博客推荐文章
一、使用Sqoop抽取数据.         Sqoop是一个在Hadoop与结构化数据存储(如关系数据库)之间高效传输大批量数据的工具. 它在2012年3月被成功孵化,现在已是Apache的顶级项目. Sqoop有Sqoop1和Sqoop2两代,Sqoop1最后的稳定版本是1.4.6,Sqoop2最后版本是1.99.6.

日志收集:ETL,ELK以及Kafka/Redis - S.Mona

- -
其实一直都想写ELK的,毕竟在公司做了一年的日志ETL的工作,而且经历了上个世纪遗留的日志收集方案到现在流行的日志收集方案的变更,但是一直都没有找到合适的时间和机会写这一篇文章,趁着寒冬需求量下降没有那么忙碌就做了. ELK是Elastic公司的产品,elastic公司最远近闻名的就是他的ElasticSearch,这也是ELK中的’E’,其他’L’和’K’,分别是指Logstash以及Kibana.