栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

KETTEL-Can‘t run transformation due to plugin missing

KETTEL-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) : 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包等如图

代码实现的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包。

 

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

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

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

集成完毕后运行,成功。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/780913.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号