先上例子:

这个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代码相关推荐

  1. kettle中java组件_kettle系列-[KettleUtil]kettle插件,类似kettle的自定义java类控件

    该kettle插件功能类似kettle现有的定义java类插件,自定java类插件主要是支持在kettle中直接编写java代码实现自定特殊功能,而本控件主要是将自定义代码转移到jar包,就是说自定义 ...

  2. kettle 教程(四):自定义 Java 代码

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qqfo24/article/detai ...

  3. Kettle变量和自定义java代码的实例应用

    1  kettle.properties参数配置数据源连接和FTP连接 由于测试环境和生产环境中数据库连接FTP等配置会在部署过程中变更,所以预先定义成配置项,在配置文件中修改,这样测试和发布将会变得 ...

  4. kettle java代码详解_kettle 如何使用java代码

    先上例子: 这个demo中,Java代码步骤需要重点讲解. 这其实就是一个用户自定义的类,比自己写一个插件方便多了. 这个类的默认类名叫Processor,默认会导入一些包中的类: import or ...

  5. 编写高性能Java代码的最佳实践

    编写高性能Java代码的最佳实践 摘要:本文首先介绍了负载测试.基于APM工具的应用程序和服务器监控,随后介绍了编写高性能Java代码的一些最佳实践.最后研究了JVM特定的调优技巧.数据库端的优化和架 ...

  6. cmd怎么实现Java你好_java环境配置以及如何在cmd窗口运行java代码

    对于初学java的人来说,电脑的环境配置也许会让你头疼,但只要你认真一些学习,相信对你来说都是OK的啦~ 首先回到桌面,选择我的电脑,单击右键属性,进入高级系统设置,点击环境变量设置.用户变量选择Te ...

  7. Android 使用java 代码获取res 里面的value 定义的数组

    现在res value 里面定义了一个array.xml 内容如下 <?xml version="1.0" encoding="utf-8"?> & ...

  8. 使用JAVA代码实现Android布局(一)RelativeLayout

    通常我们使用XML来书写Android的图形界面,XML虽然编写方便,但是在某些情况下不如JAVA代码灵活,所以在某些环境下还是必须使用JAVA代码来编写界面.我们以下XML代码为例,编写相应的JAV ...

  9. 转--Android如何在java代码中设置margin

    ========  3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...

最新文章

  1. JS阻止事件冒泡的3种方法,以及他们之间的不同
  2. 【PAT (Advanced Level) Practice】1124 Raffle for Weibo Followers (20 分)
  3. 从阿里云下载图片到本地
  4. HttpWebResponse远程服务器返回错误: (500) 内部服务器错误。
  5. Android 自定义View消除锯齿实现图片旋转,添加边框及文字说明
  6. 托管与非托管的混合编程问题
  7. 光伏发展路线图将发布 促产业优胜劣汰
  8. ols线性回归_普通最小二乘[OLS]方法使用于机器学习的简单线性回归变得容易
  9. 创业者谈:畏惧失败,但也要拥抱失败
  10. 03-23 卡顿分析
  11. Linux 命令(62)—— ar 命令
  12. 9.5---所有字符串的排列组合(CC150)
  13. 自制力才是你努力的第一步
  14. MapReduce之简单K-mer计数
  15. 从本地硬盘启动计算机,戴尔笔记本电脑设置从硬盘启动的方法
  16. 又要放大招了 监控中干扰如何消除你可知道?
  17. 游戏3D建模用到的有哪些软件?
  18. 类型 异常报告 消息 null 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 java.lang.NumberFormatException: null java.base/
  19. 锐捷NBR路由器命令执行漏洞复现
  20. 【巨杉数据库SequoiaDB】巨杉数据库无人值守智能自动化测试实践

热门文章

  1. 18岁双料竞赛金牌得主邓明扬:我只是数学初学者,求在MIT“活”下去
  2. 边打“游戏”边学Vim!这款在线、交互的练习工具火了
  3. 它来了!无人车穿梭在深圳的“宇宙最强街道”
  4. OpenGL学习(4)——纹理(补)
  5. (二十)java多线程之ScheduledThreadPoolExecutor
  6. Linux内核分析--内核中的数据结构双向链表续【转】
  7. nova resize代码调用部分分析
  8. 基于HTML5实现3D热图Heatmap应用
  9. 【转】PowerDesigner表结构和字段大小写转换
  10. Windows Server 2012 R2配置ISCSI磁盘共享盘(4)