Kettle的使用分享~Java脚本处理数据

Java脚本处理数据

当你在查这个问题时,说明大家还都是了解java开发的。其实最初使用kettle时还没注意到可以直接使用java代码进行数据处理,因为涉及到筛选数据,然后就各种添加字段处理、过滤等转换,写了十几个,结果当发现可以用java处理时,直接先写好java方法,然后打包成jar后丢到kettle里面就可以直接使用了,顿时觉得太爽了!哈哈哈

这里我贴了一个我自己写的用来格式化日期的方法,供亲参考学习,详细代码可点击下载

准备工作

  1. 先写好java方法(这里根据自己实际情况自己写方法就行,我这边只说明方法,供参考)

注:java文件要指定包名
在这里插入图片描述

  1. 测试java编译是否成功(需要先在java文件写好main方法)
E:\code\foresee\kt\java>java qiuqing.FormatUtils

在这里插入图片描述

  1. 将java方法编译后打包成jar文件

打开cmd,根据自己实际情况执行命令

E:\code\foresee\kt\java>javac qiuqing\FormatUtils.java

在这里插入图片描述

E:\code\foresee\kt\java>jar cvf  qiuqing-format.jar qiuqing\FormatUtils.class

在这里插入图片描述

  1. 测试jar包是否打包成功
      需要用压缩工具打开jar包,修改jar包里面(qiuqing-format.jar\META-INF\MANIFEST.MF)文件,添加Main-Class配置,然后覆盖保存,最后打开cmd,执行cmd运行测试。
Manifest-Version: 1.0
Created-By: 1.8.0_51 (Oracle Corporation)
Main-Class: qiuqing.FormatUtils

在这里插入图片描述

5.将打包好的jar包放到kettle目录下的lib文件夹内, 重新启动kettle
在这里插入图片描述

使用说明

转换中添加一个java脚本,双击打开
在这里插入图片描述

代码调用(以下代码仅供参考)

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import qiuqing.FormatUtils;
public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException {
    Object[] r = getRow();
    if(r == null){
        setOutputDone();
        return false;
    }
    try{
        String timeLocal = get(Fields.In,"time_local").getString(r);
        String request = get(Fields.In,"request").getString(r);
        String httpReferer = get(Fields.In,"http_referer").getString(r);
        String serverName = get(Fields.In,"server_name").getString(r);
		String httpUserAgent = get(Fields.In,"http_user_agent").getString(r);
        get(Fields.Out,"time_local").setValue(r,FormatUtils.formatDateToString(timeLocal));
        get(Fields.Out,"request").setValue(r,FormatUtils.formatUrlParam(serverName,request));
        get(Fields.Out,"http_referer").setValue(r,FormatUtils.formatUrlParam(serverName,httpReferer));
		get(Fields.Out,"http_user_agent").setValue(r,FormatUtils.formatHttpUserAgent(httpUserAgent));
        putRow(data.outputRowMeta, r);  

    }catch(ParseException e){
            
    }
    return true;
}

在这里插入图片描述

完成

猜你喜欢

转载自blog.csdn.net/const_qiu/article/details/86575627