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

news2024/11/18 12:25:05

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

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考】下篇 第15章 面向服务架构设计理论与实践

目录 一、SOA定义二、微服务微服务优势微服务与SOA对比微服务架构模式方案微服务设计约束 三、SOA参考架构四、SOA设计的标准要求五、SOA设计原则六、SOA设计模式七、SOA实施 一、SOA定义 面向服务的体系结构 (Service-Oriented Architecture,SOA), 从应用和原理的角度看&…

网络原理-HTTPS协议

在前面说到HTTP中,我们通过抓包,可以看到许多信息内容,其中往往会包含一些敏感信息,这些都是明文传输,当我们的请求被黑客或者不法分子截获后,那就很危险了,因此衍生出了HTTPS协议来对传输数据进行加密。 一、加密原理 基本原理如下: 明文 密钥 > 密文 密文…

线性稳压电路和开关稳压电路

稳压二极管稳压电路 电网电压增大,导到u1端的电压增大,从而使输出电压,稳压二极管两端的电压增大,稳压二极管两端电压增大,使流过的电注增大。那么,流过线性电阻R的总电流增大。 Ur电压增大,从…

网络故障排除—NAT-源进源出

多网络双出口一边是运营商A,一边是运营商B,将内网服务器分别映射到运营商B和运营商A出口。查了保证内部上网用户网速快管理员开启了运营商选路功能,运营商B的网站从运营商B出去,然后写有两条等价默认路由分别指向两个外网出口。营商A的网站从…

内网安全-隧道搭建穿透上线内网穿透-nps自定义上线内网渗透-Linux上线-cs上线Linux主机

目录 内网安全-隧道搭建&穿透上线内网穿透-nps-自定义-上线NPS工具介绍搭建过程 nps原理介绍MSF上线CS上线 内网渗透-Linux上线-cs上线Linux主机1.下载插件2.导入插件模块3.配置监听器4.服务端配置5.配置C2监听器并生成木马6.执行木马 内网安全-隧道搭建&穿透上线 内网…

重学java 49 增强for

知之俞明,则行之越笃;行之愈笃,则知之愈益; —— 24.5.28 一、基本使用 1.作用: 遍历集合或者数组 2.格式: for(元素类型 变量名:要遍历的集合名或者数组名) 变量名就是代表的每一个元素 3.快捷键: 集合名或者数组名.for package …

Transformers x SwanLab:可视化NLP模型训练

HuggingFace 的 Transformers 是目前最流行的深度学习训框架之一(100k Star),现在主流的大语言模型(LLaMa系列、Qwen系列、ChatGLM系列等)、自然语言处理模型(Bert系列)等,都在使用T…

Web3探索加密世界:空投常见类型有哪些?附操作教程

每种空投类型都有独特的特征和目的,我们需要了解不同类型的加密空投。本文给大家介绍的是流行的加密货币空投类型,以及一般空投是如何做的。感兴趣的话请看下去。 一、空投常见类型 1、持有者空投 持有者空投向钱包中持有一定数量数字货币的人免费发放…

基于MyBatisPlus表结构维护工具

SuperTable表结构维护工具 一、简述 用于同步表实体与数据库表结构,同步建表、删改字段、索引,种子数据的工具… 一、开发环境 JDK:JDK8SpringBoot:2.7.2MyBatisPlus: 3.5.6MySQL: 5.7其他依赖:略 二、特性 表结…

大话C语言:第18篇 函数

1 函数概述 函数是c语言的功能单位,实现一个功能可以封装一个函数来实现。函数是一种可重用的代码块,用于执行特定任务或完成特定功能。函数主要作用是对具备相同逻辑的代码进行封装,提高代码的编写效率,实现对代码的重用。例如&a…

【Spring】深入学习AOP编程思想的实现原理和优势

【切面编程】深入学习AOP编程思想的实现原理和优势 前言AOP的由来及AOP与代理的关系AOP的实现方式详解静态代理动态代理 AOP的应用场景记录日志权限控制数据库事务控制缓存处理异常处理监控管理 AOP的底层实现全流程解析Spring AOP的简介动态代理的实现原理Spring AOP的实现原理…

流水账(CPU设计实战)——lab3

Lab3 Rewrite V1.0 版本控制 版本描述V0V1.0相对V0变化: 修改了文件名,各阶段以_stage结尾(因为if是关键词,所以module名不能叫if,遂改为if_stage,为了统一命名,将所有module后缀加上_stage&a…

关于Windows中桌面窗口管理器的知识,看这篇文章就可以了

序言 你打开了任务管理器,发现了一个叫做“桌面窗口管理器”的东西,它是恶意软件吗?它应该在任务管理器吗?如果它应该在那里,它的作用什么?以下是你需要了解的所有信息。 什么是桌面窗口管理器 Desktop Window Manager(dwm.exe)是一个合成窗口管理器,可以在Windows…

SB-OSC,最新的 MySQL Schema 在线变更方案

目前主流的 MySQL 在线变更方案有两个: 基于 trigger 的 pt-online-schema-change基于 binlog 的 gh-ost 上周 Sendbird 刚开源了他们的 MySQL Schema 在线变更方案 SB-OSC: Sendbird Online Schema Change。 GitHub 上刚刚 25 颗星星,绝对新鲜出炉。 …

Java | Leetcode Java题解之第104题二叉树的最大深度

题目&#xff1a; 题解&#xff1a; class Solution {public int maxDepth(TreeNode root) {if (root null) {return 0;}Queue<TreeNode> queue new LinkedList<TreeNode>();queue.offer(root);int ans 0;while (!queue.isEmpty()) {int size queue.size();wh…

go语言基准测试Benchmark 最佳实践-冒泡排序和快速排序算法基准测试时间复杂度对比

在go语言中Benchmark基准测试( 在后缀为_test.go的文件中&#xff0c;函数原型为 func BenchmarkXxx(b *testing.B) {}的函数 )可以用来帮助我们发现代码的性能和瓶颈&#xff0c; 其最佳实践 应该是我们最常用的 冒泡排序和快速排序的测试了&#xff0c;废话不说&#xff0c;直…

玄机平台应急响应—webshell查杀

1、前言 这篇文章说一下应急响应的内容&#xff0c;webshell查杀呢是应急响应的一部分。那么什么是应急响应呢&#xff0c;所谓的应急响应指的是&#xff0c;当网站突然出现异常情况或者漏洞时&#xff0c;能够马上根据实际问题进行分析&#xff0c;然后及时解决问题。 2、应…

软件游戏找不到xinput1_3.dll如何修复?分享几种有效的解决方法

当您在使用电脑过程中遇到系统提示“xinput1_3.dll文件丢失”时&#xff0c;这可能会导致某些游戏或应用程序无法正常运行&#xff0c;因为xinput1_3.dll是与DirectX相关的一个重要动态链接库文件&#xff0c;主要负责处理游戏控制器输入。为了解决这个问题&#xff0c;我通过查…

华为实训课笔记 2024

华为实训 5/205/215/225/235/275/28 5/20 5/21 5/22 5/23 5/27 5/28