kettle中使用java代码模块

时间:2022-12-29 11:29:57

在kettle使用java代码模块需要注意的一些事项,以防忘记。

首先需要继承processRow方法,跟java的main方法类似,代码从这里开始执行,并且在里边读取跟保存变量。

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws Exception
{

Object[] r = getRow();

if (r == null) {
setOutputDone();
return false;
}

r = createOutputRow(r, data.outputRowMeta.size());

String appid = get(Fields.In, "appid").getString(r);
String appkey = get(Fields.In, "appkey").getString(r);
String city_code = get(Fields.In, "city_code").getString(r);
String date = get(Fields.In, "date").getString(r);

Map body = new HashMap();
body.put("city_code", city_code);
body.put("date", date);

String sign = signRequest(appid, body, appkey);

get(Fields.Out,"sign").setValue(r,sign);

logBasic("sign:"+sign);


putRow(data.outputRowMeta, r);

return true;
}
如上,前几行代码不变  读取变量使用 get(Fields.In, "appid");

保存变量使用get(Fields.Out,"sign").setValue(r,sign);

最后不要忘记putRow(data.outputRowMeta, r);及return true;


输入日志可以使用logBasic("sign:"+sign);


上面import java.util.*;

需要的jar包放入kettle安装目录的lib目录下

底下变量名称跟保存变量名称一样,如下图所示

kettle中使用java代码模块kettle中使用java代码模块