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();

}

}

集成完毕后运行,成功。

相关推荐
gis开发之家几秒前
Spring Boot 4 深度解析——参数接收大全:@RequestParam、@PathVariable、@RequestBody
java·spring boot·后端·spring
来让爷抱一个16 分钟前
拯救我的“烂尾“项目:我用MonkeyCode把五个AI热点实践了个遍
网络·数据库·人工智能·prompt·ai编程
(轻舟已过万重山)16 分钟前
D1 · 融合蓝图:Spring AI + 虚拟线程 + 服务网格——现代后端统一底座
java·人工智能·spring
SamDeepThinking26 分钟前
警惕那些很长时间没有编写任何代码、却在设计系统的人
java·后端·架构
可涵不会debug26 分钟前
LangChain 示例选择器(Example selectors)完整基础概念解读
服务器·前端·数据库
莫得感情 o27 分钟前
并发 13 · 异步编排
java·并发
TizzyGoodhealth29 分钟前
从零到一搭建Spring‑AI原生Tool‑Calling AI Agent|架构对比+完整实战源码+踩坑实录
java·ai·知识库·rag·ai agent·spring ai
mmsx31 分钟前
置灰按钮为什么自己又“亮“了?一次状态缓存“双写冲突“的排查记录
java·缓存·bug·livedata
rannn_11131 分钟前
【力扣hot100】图论专题+模板|DFS、BFS、拓扑排序...
java·算法·leetcode·深度优先·图论
用户31268748772035 分钟前
ReentrantLock 到底怎么排队的?AQS 源码拆解
java