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、测试运行

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/653576.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

100个AI Agent应用场景合集

人工智能代理(AI Agent)的发展正在以前所未有的速度改变我们的生活和工作方式。从日常生活的小事到企业级的复杂决策,AI Agent 的应用场景广泛且多样。 以下是 100 个 AI Agent 的创新应用场景,它们展示了 AI 技术如何渗透到我们生…

AI与空间设计的碰撞?

遇到难题不要怕!厚德提问大佬答! 厚德提问大佬答9 你是否对AI绘画感兴趣却无从下手?是否有很多疑问却苦于没有大佬解答带你飞?从此刻开始这些问题都将迎刃而解!你感兴趣的话题,厚德云替你问,你解…

【Python】 Python中__slots__的妙用与深入解析

基本原理 在Python中,__slots__是一个特殊的类属性,它可以用来限制一个类可以拥有的属性数量。这个特性在Python中非常有用,尤其是在创建大量实例时,可以显著减少内存的使用。 通常,Python的类会为每个实例自动创建一…

一文解决弹窗交互设计难题,轻松上手

弹窗交互的分类 我们每天所说的弹出窗口是一个非常笼统的概念。我们习惯性地称所有的对话框、浮层和提示条为弹出窗口。事实上,弹出窗口可以分为两种类型:模态弹出框和非模态弹出框。在 UI 在设计中,当它迫使用户与之交互时,我们…

白酒:产地的水资源与酿酒工艺的关联性

云仓酒庄豪迈白酒的酿造过程中,水资源与酿酒工艺之间存在着密切的关联性。水是白酒酿造的重要原料之一,其质量和数量直接影响着酿酒工艺的实施和酒的品质。下面我们和云仓酒庄豪迈白酒来深入探讨一下,产地的水资源如何与酿酒工艺产生关联。 首…

工具:Visual Studio Code

一、VSCode生成exe 二、在vs中断点调试 如果没效果需要安装如下与unity相连接的插件 三、注释 1、代码注释 注释和取消都是都是同一个命令:选中代码,然后按住CtrlShift/ 2、方法或类注释 /// 四、导航 五、将变量注释展示到解释面板 1、直接显示 [Too…

查分小程序怎么用?

在教育信息化的浪潮中,一种新型的成绩管理工具成绩发布小程序,正逐渐成为教师的得力助手。简化了成绩发布流程,还提高了信息的安全性和便捷性。 查分小程序的使用方法非常直观。只需在威信中搜索并打开易查分小程序,教师按照提示注…

ABAP 借助公司封装的钉钉URL,封装的RFC给钉钉发送消息

FUNCTION ZRFC_BC_SMSSEND_DINGTALK. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(DESTUSRID) TYPE CHAR255 *" VALUE(CONTENT) TYPE CHAR255 *&quo…

做外贸对于有些客户不需要有太好的脾气

小琦结婚生娃前是做外贸销售的,当时的老板是印度人。结婚生娃之后就辞职做起了微商,在这接近七八年的时间里,再也没有接触过外贸业务,偶尔有之前的客户来找,也会推荐回去给老东家。 疫情结束后的这两年,印…

【Linux】-Kafka集群安装部署[18]

简介 Apache Kafka是一款分布式的、去中心化的、高吞吐低延迟、订阅模式的消息队列系统。 同RabbitMQ一样,Kafka也是消息队列。不过RabbitMQ多用于后端系统,因其更加专注于消息的延迟和容错。 Kafka多用于大数据体系,因其更加专注于数据的…

K8s service 进阶

文章目录 K8s service 进阶Service 工作逻辑Service 具体实现Service 资源类型ClusterIPNodePortLoadBalancerExternalName Service 与 EndpointEndpoint 与 容器探针自定义Endpoint Service 相关字段sessionAffinityexternalTrafficPolicyinternalTrafficPolicypublishNotRead…

新手做抖店该怎么选品?怎么选爆款?选爆品牢记这五大方法

大家好,我是电商花花。 不论之前还是现在,我们做电商想要出单,赚钱,选品对于我们店铺来说都是至关重要的,我们能不能在抖店上赚钱,就看我们的选品,看我们商品选的怎么样了。 如果品选的不错&a…

男士内裤哪个品牌好穿舒服?适合夏季的五款男士内裤推荐

很多男性对内裤的不重视,似乎是与生俱来的,错把“糙汉”当“硬汉”。特别是一直以来都由女性包办内裤的男士,经常是不合适也勉强穿着。即使是生活条件不断提升的今天,还是有不少男士表面光鲜亮丽,对内裤反而不太讲究。…

Mysql 单行转多行,把逗号分隔的字段拆分成多行

一、拆分前后的数据 二、执行SQL select substring_index(substring_index(a.gzlx,,,b.help_topic_id1),,,-1) gzlxname, a.gzlx,a.* from dt_task_zxgz_info a join mysql.help_topic b on b.help_topic_id < (length(a.gzlx) - length(replace(a.gzlx,,,))1) 三、解释说…

解读:Mint Blockchain 最新路线图,释放 NFT 生态重磅发展计划

作者&#xff1a;Mint Ecosystem 关于 Mint Blockchain&#xff1a;Mint Blockchain 是一个以太坊原生 L2 网络&#xff0c;核心是发展 NFT 生态和产业&#xff0c;促进 NFT 领域的 Mass Adoption 产生。MintCore 团队致力于将 Mint Blockchain 打造成一个围绕服务 NFT 资产的…

【Qt】Qt定时器类QTimer

在进行窗口程序的处理过程中, 经常要周期性的执行某些操作, 或者制作一些动画效果&#xff0c;看似比较复杂的问题使用定时器就可以完美的解决这些问题&#xff0c; Qt中提供了两种定时器方式一种是使用Qt中的事件处理函数这个在后续章节会给大家做细致的讲解&#xff0c;本节主…

89.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-游戏中使用的哈希算法逆向分析

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

1104. 二叉树寻路

1104. 二叉树寻路 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;_1104二叉树寻路 错误经验吸取 原题链接&#xff1a; 1104. 二叉树寻路 https://leetcode.cn/problems/path-in-zigzag-labelled-binary-tree/description/ 完成情况&a…

学历提升青岛理工大学计算机网络技术试题及答案,分享几个实用搜题和学习工具 #媒体#媒体#知识分享

在大学的学习过程中&#xff0c;我们常常会遇到一些难以解决的问题&#xff0c;有时候甚至会感到束手无策。然而&#xff0c;如今的技术发展给我们提供了新的解决方案。搜题软件作为一种强大的学习工具&#xff0c;正在被越来越多的大学生所接受和使用。今天&#xff0c;我将为…

如何将 Langfuse 链接到自有 PostgreSQL 数据库并升级 PostgreSQL 版本

在本文中,我们将介绍如何将 Langfuse 应用程序链接到自有的 PostgreSQL 数据库,并升级 PostgreSQL 以支持 jsonb 类型。 前提条件 运行 CentOS 7 的服务器已安装的 PostgreSQL 9.2 或更低版本需要将 Langfuse 连接到自有数据库,并升级 PostgreSQL 以支持 jsonb 类型1. 将 La…