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
[ERROR][2022-03-22T15:04:58.073+0800][init 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] 初始化失败!
[ERROR][2022-03-22T15:04:58.143+0800][pool-3-thread-1] org.pentaho.di.trans.Trans : [] 步骤 [JSON input.0] 初始化失败!
[ERROR][2022-03-22T15:04:58.150+0800][pool-3-thread-1] _undef||spanid=lathe-kettle||cspanid=||traceid=||running elt task error,message:
无法初始化至少一个步骤. 执行无法开始!
缺少JSON input 的plugin插件
如果你是kettle官网下载的工具,一般不会报这个错,报的话,取工具包里查看plugin里是否有
kettle-json-plugin–core这个包以及包下是否有jar包等如图
如果你是java代码实现的kettle功能,这里你要看下是是否代码集成了这个插件。
方法一:
在初始化类里加上这段内容
StepPluginType.getInstance().getPluginFolders().
add(new PluginFolder(“/Users/desktop/data–integration/plugins/kettle-json-plugin“,
false, true))
因为是自己引入了kettle包实现的kettle核心同步功能,而且该包无法通过pom注入方式解决
而且项目发布上线的仓库里也没有该包,如果想再上面的代码可以发布需要人工把包上传到服务器,如果是容器,需要把包放到项目里,然后再通过项目脚本,把文件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();
}
}
原文地址:https://blog.csdn.net/YLXCA/article/details/134684970
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_14903.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!