关于kettle的插件开发
在kettle插件开发注意4个接口
StepDataInterface,StepMetaInterface,StepInterface,StepDialogInterface。
然后就是你想做什么插件?
我重点讲一下自己对StepInterface接口的方法的使用和理解。
StepInterface也是插件开发的最终的步骤
比如输入,输出插件(数据清洗插件或这数据格式转换插件差不多是二者的综合)就就有不同的差异
比如下面StepInterface接口processRow()方法
对该方法说明一下,处理每一行数据数据直到 setOutputDone()方法的调用。才结束循环调用processRow()方法。每一次就处理一行数据,横着的那种。
//输入插件,将其他数据读取到kettle里面
if(first){
Object[] row = load() //自定义的加载方法
putRow(data.outputRowMeta, row );
}
//如果是输出插件
if(first){
throw new kettleException("输出步骤不能是第一步")
}else{
Object[] row = getRow();
save(); //自定义存储插件
}
而且还要注意这里的row是每次一行数据!
比如这个
row=new String{“23”,“name”,“student”,“15776750834”,“zhangsan”}
而且没有表头,所有我们在获获取数据的时候,注意顺带获取表头数据。valueMetaList就是表头。
对了,忘了说一个对象也是输入,输出差异比较大的一点RowMetaAndData,行meta对象和data对象。行对象是用于两个插件数据传输的对象。也是写入写出的对象。在输入的时候,你需要new RowMetaInterface,给后面的人使用。而在输出的时候,你要接受前面传过来的RowMetaInterface,同时你需要处理后 然后在传一个RowMetaInterface给后面(如果后面还有,没有了,可以懒得传)
也就是可以理解为一个为outputRowMeta,inputRowMeta的两个对象,输入输出对象
data.outputRowMeta = getInputRowMeta().clone();
List<ValueMetaInterface> valueMetaList = data.outputRowMeta.getValueMetaList();
。
结束了,懒得写了,因为其他的重点还没发现,后面需要在该