我们先了解不同于java代码的kettle的一些方法
1、getRow();
获取每一行数据,循环读数据;返回的是Object[]数组
2、get(Fields.in,"字段名");
获取具体的某个字段的名称
3、get(Fields.in,"字段名").getString(r);
获取这一行数据中,对应的字段名并且是值是字符串类型的数据
4、setOutputDone()
结束输出,不往后面的步骤传递数据
5、putRow(outputRowMeta, outputRow);
把数据的结构以及值传给下个数据
6、logBasic("数据是: " +b);
打印基础日志
功能、获取记事本里面的数据,把这个数据进行简单的处理,然后输出;
难点:1、我不想要把处理后的值覆盖掉原来的值,而是创建一个新的字段,给这个新的字段赋值
2、其次我不想要之前的字段,很冗余
记事本配置

 
java代码如下
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
 //1、获取输入行数据
  Object[] r = getRow();
 //2、若为null,则停止输出
  if (r == null) {
    setOutputDone();
    return false;
  }
 //3、获取数据
  Object a=r[0];
  //4、打印日志
 logBasic("获取到的数据是   "+a);
  //5、创建一个输出行,是基于输入行的数据的,形参个数也一致
  r = createOutputRow(r, data.outputRowMeta.size());
 //6、给输出行的字段名为yy的赋值
  get(Fields.Out, "yy").setValue(r, a+"--hello--");
 //7、输出行
  putRow(data.outputRowMeta, r);
  return true;
}
 

结果如下

如果不勾选清空结果字段

那么结果就会包含输入行信息
 
到这里,我们做一个小练习,对redis进行读取与设置吧
1、把redis的jar包放入kettle的lib下
2、重启kettle
3、编写代码
redis set代码
import redis.clients.jedis.Jedis;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
  //1、读取输入行信息
  Object[] r = getRow();
  if (r == null) {
    setOutputDone();
    return false;
  }
  //2、获取信息
   String kinfo=get(Fields.In,"kinfo").getString(r);
   String kname=get(Fields.In,"kname").getString(r);
  //3、把redis的key存放到key的字段里
   get(Fields.Out,"key").setValue(r,kinfo);
   //4、连接redis
   Jedis jedis = new Jedis("10.20.1.17", 6379);
   // 设置键值对
   jedis.set(kinfo,kname);
   // 关闭连接
   jedis.close();
  //5、创建输出行
   r = createOutputRow(r, data.outputRowMeta.size());
  //6、输出行
   putRow(data.outputRowMeta, r);
  return true;
}
 
redis get 代码
import redis.clients.jedis.Jedis;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
  Object[] r = getRow();
  if (r == null) {
    setOutputDone();
    return false;
  }
 String key=get(Fields.In,"key").getString(r);
Jedis jedis = new Jedis("10.20.1.17", 6379);
// 获取键值对
String name = jedis.get(key);
 // 关闭连接
 jedis.close();
 logBasic("获取redis信息  "+name);
  putRow(data.outputRowMeta, r);
  return true;
} 
4、测试运行
 






















