kettle组件之java代码,快速上手必看

我们先了解不同于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、测试运行

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_37591637

请给我持续更新的动力~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值