Kettle 中转换(transformation)的执行过程
2015-07-08 16:02
423 查看
1,Spoon.java的main方法是整个Kettle运行的入口。当打开Kettle的设计器界面后,可以在其中设计作业和转换。这里讨论转换的执行过程。
2,设计好一个转换后,转换保存的本地文件是 .ktr文件。从 .ktr文件中可以读取出该转换的元数据transMeta。
3,点击运行按钮时,触发监听器,调用Spoon.java 的runFile() ,在runFile里面调用 executeFile()。在executeFile()里面获得了transMeta数据。
4,再调用executeTransformation(),在该方法里 new Thread,并在线程的run方法里面执行该转换
5,最终在 org.pentaho.di.ui.spoon.delegates.SpoonTransformationDelegate.java 的方法executeTransformation(TransMeta, boolean, boolean, boolean, boolean, boolean, Date, boolean, LogLevel)中配置好转换的参数,以及执行转换的模式,启动并执行转换。
这里整合了Storm,可以让转换执行在Storm上。
总结:transMeta数据是构建转换的元数据,只要获得了transMeta,就可以在其它地方重新构建转换。而transMeta最初是在Spoon.java 的 executeFile() 里面通过 getActiveTransformation()方法获得。
2,设计好一个转换后,转换保存的本地文件是 .ktr文件。从 .ktr文件中可以读取出该转换的元数据transMeta。
3,点击运行按钮时,触发监听器,调用Spoon.java 的runFile() ,在runFile里面调用 executeFile()。在executeFile()里面获得了transMeta数据。
public void executeFile(boolean local, boolean remote, boolean cluster, boolean preview, boolean debug, Date replayDate, boolean safe) { TransMeta transMeta = getActiveTransformation();//在这里得到了transMeta if (transMeta != null) executeTransformation(transMeta, local, remote, cluster, preview, debug, replayDate, safe, transExecutionConfiguration.getLogLevel());
4,再调用executeTransformation(),在该方法里 new Thread,并在线程的run方法里面执行该转换
delegates.trans.executeTransformation(transMeta, local, remote, cluster, preview, debug, replayDate, safe, logLevel);
5,最终在 org.pentaho.di.ui.spoon.delegates.SpoonTransformationDelegate.java 的方法executeTransformation(TransMeta, boolean, boolean, boolean, boolean, boolean, Date, boolean, LogLevel)中配置好转换的参数,以及执行转换的模式,启动并执行转换。
else if( executionConfiguration.isExecutingStorm()){ //execute transformation in storm platform activeTransGraph.startTopology(executionConfiguration); }
这里整合了Storm,可以让转换执行在Storm上。
总结:transMeta数据是构建转换的元数据,只要获得了transMeta,就可以在其它地方重新构建转换。而transMeta最初是在Spoon.java 的 executeFile() 里面通过 getActiveTransformation()方法获得。
相关文章推荐
- 回归分析中的正则化问题
- 【算法学习笔记】65. 双向扫描 SJTU OJ 1382 畅畅的牙签盒
- Dynamics AX 2012 R2 堆栈跟踪:不能对客户端调用'unchecked'
- hdu 5233 Gunner II (stl vector map)
- 如何允许跨域?什么是Access-Control-Allow-Origin:*
- Apache Shiro 集成-Cas
- 理论:如何调整四轴4个电机的转速,使飞行器朝不同方向运动
- label在cell中 自适应
- RYU入门教程
- 好用的http工具
- Android多线程下安全访问数据库
- Cuda束表决函数(warp vote)
- ios navigationcontroller 返回按钮标题动态更改
- iOS项目代码行数统计
- eclipse中安装tomcat插件
- python初码
- PAT 1085. Perfect Sequence (25)
- java代码中将金额阿拉伯数字转化为中文大写
- 剑指off笔记——拷贝函数为什么不能是值传递
- CocoaPods安装和使用教程:出处:http://code4app.com/article/cocoapods-install-usage