kettle 如何使用java代码
先上例子:
这个demo中,Java代码步骤需要重点讲解.
这其实就是一个用户自定义的类,比自己写一个插件方便多了.
这个类的默认类名叫Processor,默认会导入一些包中的类:
import org.pentaho.di.trans.steps.userdefinedjavaclass.*;
import org.pentaho.di.trans.step.*;
import org.pentaho.di.core.row.*;
import org.pentaho.di.core.*;
import org.pentaho.di.core.exception.*;
//它继承了抽象类:
//org.pentaho.di.trans.steps.userdefinedjavaclass.TransformClassBase
public class Processor extends TransformClassBase{
//处理一个输入行,如果返回true,继续准备处理另一个输入行,如果没有数据处理,则返回false。
public boolean proce***ow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
// First, get a row from the default input hop
//它等待前一步骤提供一行数据,会阻塞,返回一个对象数组表示输入行
Object[] r = getRow();
// If the row object is null, we are done processing.
//输入行为null,说明已经没有输入行了,需要处理
if (r == null) {
setOutputDone();
return false;
}
// Let's look up parameters only once for performance reason.
//标识是否是第一行数据
if (first) {
first=false;
}
// It is always safest to call createOutputRow() to ensure that your output row's Object[] is large
// enough to handle any new fields you are creating in this step.
//确认object数组是否能够容纳输出行,如果不够,怎扩容.
Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
//TransformClassBase抽象类的get( Fields type, String name ),返回FieldHelper
//org.pentaho.di.trans.steps.userdefinedjavaclass.FieldHelper
String name = get(Fields.In, "name").getString(r);
Number age = get(Fields.In, "age").getNumber(r);
String outValue=name+age;
get(Fields.Out, "out").setValue(outputRow, outValue);
// putRow will send the row on to the default output hop.
//将输出数据传输到下一步,会阻塞
putRow(data.outputRowMeta, outputRow);
return true;
}
}
注意点:
1.get(Fields.In, "name") 这个"name"从前一个步骤获取,也可以在这个步骤下方的参数中设置,标签设置为任意名称,如:xx,值就填上name,这样就可以将代码改为get(Fields.In,xx);
2.get(Fields.Out, "out") 这个"out"就是下方的字段中设置的out.
3.其实输入输出字段名都可以在下方的参数设置.用getParameter("name")获取到name的值.
转载于:https://blog.51cto.com/10814560/1721321
kettle 如何使用java代码相关推荐
- kettle中java组件_kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件
该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...
- kettle 教程(四):自定义 Java 代码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qqfo24/article/detai ...
- Kettle变量和自定义java代码的实例应用
1 kettle.properties参数配置数据源连接和FTP连接 由于测试环境和生产环境中数据库连接FTP等配置会在部署过程中变更,所以预先定义成配置项,在配置文件中修改,这样测试和发布将会变得 ...
- kettle java代码详解_kettle 如何使用java代码
先上例子: 这个demo中,Java代码步骤需要重点讲解. 这其实就是一个用户自定义的类,比自己写一个插件方便多了. 这个类的默认类名叫Processor,默认会导入一些包中的类: import or ...
- 编写高性能Java代码的最佳实践
编写高性能Java代码的最佳实践 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架 ...
- cmd怎么实现Java你好_java环境配置以及如何在cmd窗口运行java代码
对于初学java的人来说,电脑的环境配置也许会让你头疼,但只要你认真一些学习,相信对你来说都是OK的啦~ 首先回到桌面,选择我的电脑,单击右键属性,进入高级系统设置,点击环境变量设置.用户变量选择Te ...
- Android 使用java 代码获取res 里面的value 定义的数组
现在res value 里面定义了一个array.xml 内容如下 <?xml version="1.0" encoding="utf-8"?> & ...
- 使用JAVA代码实现Android布局(一)RelativeLayout
通常我们使用XML来书写Android的图形界面,XML虽然编写方便,但是在某些情况下不如JAVA代码灵活,所以在某些环境下还是必须使用JAVA代码来编写界面.我们以下XML代码为例,编写相应的JAV ...
- 转--Android如何在java代码中设置margin
======== 3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...
最新文章
- JS阻止事件冒泡的3种方法,以及他们之间的不同
- 【PAT (Advanced Level) Practice】1124 Raffle for Weibo Followers (20 分)
- 从阿里云下载图片到本地
- HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。
- Android 自定义View消除锯齿实现图片旋转,添加边框及文字说明
- 托管与非托管的混合编程问题
- 光伏发展路线图将发布 促产业优胜劣汰
- ols线性回归_普通最小二乘[OLS]方法使用于机器学习的简单线性回归变得容易
- 创业者谈:畏惧失败,但也要拥抱失败
- 03-23 卡顿分析
- Linux 命令(62)—— ar 命令
- 9.5---所有字符串的排列组合(CC150)
- 自制力才是你努力的第一步
- MapReduce之简单K-mer计数
- 从本地硬盘启动计算机,戴尔笔记本电脑设置从硬盘启动的方法
- 又要放大招了 监控中干扰如何消除你可知道?
- 游戏3D建模用到的有哪些软件?
- 类型 异常报告 消息 null 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.NumberFormatException: null java.base/
- 锐捷NBR路由器命令执行漏洞复现
- 【巨杉数据库SequoiaDB】巨杉数据库无人值守智能自动化测试实践
热门文章
- 18岁双料竞赛金牌得主邓明扬:我只是数学初学者,求在MIT“活”下去
- 边打“游戏”边学Vim!这款在线、交互的练习工具火了
- 它来了!无人车穿梭在深圳的“宇宙最强街道”
- OpenGL学习(4)——纹理(补)
- (二十)java多线程之ScheduledThreadPoolExecutor
- Linux内核分析--内核中的数据结构双向链表续【转】
- nova resize代码调用部分分析
- 基于HTML5实现3D热图Heatmap应用
- 【转】PowerDesigner表结构和字段大小写转换
- Windows Server 2012 R2配置ISCSI磁盘共享盘(4)