java整合kettle加载output json相关插件

问题异常:

2022/03/22 15:04:58 - JSON input.0 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : Can't run transformation due to plugin missing

ERROR2022-03-22T15:04:58.073+0800init of JSON input.0 (Thread-87) org.pentaho.di.trans.Trans : \[\] Can't run transformation due to plugin missing

2022/03/22 15:04:58 - JSON input.0 - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : 错误初始化步骤JSON input

ERROR\]\[2022-03-22T15:04:58.073+0800\]\[init of JSON input.0 (Thread-87)\] org.pentaho.di.trans.Trans : \[\] 错误初始化步骤\[JSON input

2022/03/22 15:04:58 - 表输出.0 - Connected to database test (commit=1000)

2022/03/22 15:04:58 - ktr_sf_https_encrypt - ERROR (version 8.3.0.0-371, build 8.3.0.0-371 from 2019-06-11 11.09.08 by buildguy) : 步骤 JSON input.0 初始化失败!

ERROR2022-03-22T15:04:58.143+0800pool-3-thread-1 org.pentaho.di.trans.Trans : \[\] 步骤 JSON input.0 初始化失败!

ERROR2022-03-22T15:04:58.150+0800pool-3-thread-1 _undef||spanid=lathe-kettle||cspanid=||traceid=||running elt task error,message:

无法初始化至少一个步骤. 执行无法开始!

缺少JSON input 的plugin插件

解决方法一:

如果你是kettle官网下载的工具,一般不会报这个错,报的话,取工具包里查看plugin里是否有

kettle-json-plugin-core这个包以及包下是否有jar包等如图

代码实现的kettle功能此问题解决方法:

如果你是java代码实现的kettle功能,这里你要看下是是否代码集成了这个插件。

方法一:

在初始化类里加上这段内容

StepPluginType.getInstance().getPluginFolders().

add(new PluginFolder("/Users/desktop/data-integration/plugins/kettle-json-plugin",

false, true))

这种需要把你本地路径的插件包加载到项目中,运行可成功

因为是自己引入了kettle包实现的kettle核心同步功能,而且该包无法通过pom注入方式解决

而且项目发布上线的仓库里也没有该包,如果想再上面的代码可以发布需要人工把包上传到服务器,如果是容器,需要把包放到项目里,然后再通过项目脚本,把文件copy到项目文件下加载。

方法二:

通过copy kettle的源码,把插件类copy到项目中

Kettle工具:Download Pentaho from Hitachi Vantara from SourceForge.net

Kettle源码:GitHub - pentaho/pentaho-kettle: Pentaho Data Integration ( ETL ) a.k.a Kettle

我本次缺失的插件是JSON input 因此,我找到源码中的JSON input,把代码copy下来

路径如下图:

copy后的结构如下,没有继续分包了,上面的图里框住的都copy下来。注意:如果copy源码,pom里就不能注入下面的jar包。

<!--<dependency>

<groupId>org.pentaho.di.plugins</groupId>

<artifactId>kettle-json-plugin-core</artifactId>

<version>8.3.0.0-371</version>

<version>9.0.0.0-20181104.095715-119</version>

</dependency>-->

源码copy完成后,再初始化方法里,加载插件,我这里加入两个插件,一个es,一个jsoninput

其中registerCustom的参数,对应meta类的@Step 注解里的定义

/**

* 这里需要可以通过注解的形式来做

* 1 动态解析出插件的编码、名称等

*/

private void registryCustomPluginList(){

try {

StepPluginType.getInstance().registerCustom(ElasticSearchBulkMeta.class,

"ElasticSearchBulk.TypeLongDesc.ElasticSearchBulk",

"ElasticSearchBulk",

"ElasticSearchBulk.TypeLongDesc.ElasticSearchBulk",

"",null);

StepPluginType.getInstance().registerCustom(JsonInputMeta.class,

"JsonInput.name",

"JsonInput",

"JsonInput.name",

"",null);

} catch (KettlePluginException e) {

e.printStackTrace();

}

}

集成完毕后运行,成功。

相关推荐
初願致夕霞9 分钟前
MySQL_索引
数据库·mysql
linweidong19 分钟前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
OpenAnolis小助手25 分钟前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·阿里云·操作系统控制台·sysom
十六年开源服务商37 分钟前
2026网站备份方案完整指南
数据库·oracle
ForteScarlet1 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
萧瑟余晖1 小时前
Java深入解析篇六十二之安全机制详解
java·开发语言
小刘在重生~1 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
Orange_sparkle1 小时前
Pi Agent vs LangGraph:从人机交互、企业 RAG 到持久化工作流的完整选型指南
java·网络·人机交互
一只小李郁vickie1 小时前
mysql 开启压缩传输3402条数据2.1秒压缩到毫秒级
数据库·mysql
张继雁2 小时前
张继雁 个人技术简介|磨削加工过滤方向
大数据·数据库·论文阅读·人工智能·机器学习·创业创新·业界资讯