KETTEL-Can‘t run transformation due to plugin missing

本文讲述了在使用Kettle过程中遇到的JSONinput插件丢失问题,通过源码集成和配置解决,同时提供了相关步骤和源码引用,适合Kettle开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题异常:

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包。

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

集成完毕后运行,成功。

### 如何在银河麒麟操作系统上安装 Pentaho Kettle #### 准备工作 为了确保 Kettle 能够正常运行,在安装之前需要确认 JDK 的版本满足最低要求。建议使用 jdk1.8 或更高版本,这是因为较低版本可能会导致 Spoon.bat 或其他脚本无法启动的情况[^2]。 #### 安装步骤 1. **JDK 安装** 首先下载并安装适合 ARM 架构的 JDK 版本。可以通过官方 Oracle 网站或者 OpenJDK 获取对应的二进制文件,并将其解压至指定目录。 2. **环境变量配置** 编辑 `~/.bashrc` 文件,添加如下内容以设置 JAVA_HOME 和 PATH 变量: ```bash export JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH ``` 执行命令使更改生效: ```bash source ~/.bashrc ``` 3. **Kettle 下载与解压** 访问 Pentaho 官方网站或其他可信资源获取最新版 Kettle 压缩包(通常为 `.zip` 或 `.tar.gz` 格式),然后通过以下方式解压缩: ```bash tar -zxvf kettle-version.tar.gz -C /opt/kettle/ ``` 4. **验证依赖项** 如果遇到任何错误提示缺少库文件,则需手动安装这些缺失组件。例如,某些情况下可能需要额外安装 libstdc++ 库来解决兼容性问题[^4]。 5. **启动测试** 进入 Kettle 解压后的 bin 目录执行 spoon 启动脚本: ```bash cd /opt/kettle/data-integration ./spoon.sh ``` 若一切正常,图形界面将会弹出;如果失败,请仔细查看终端打印的日志信息定位具体原因。 6. **源码调试支持** 对于希望深入研究 Kettle 工作机制的朋友来说,可以按照特定教程完成源码导入 MyEclipse 中的工作流程[^3]。此过程涉及 Maven 项目构建以及插件加载等多个环节,务必严格按照说明操作以免遗漏重要细节。 ```python # 示例 Python 脚本用于自动化部分任务处理 import os def setup_jdk(jdk_path): """ 设置 JDK 环境 """ with open(os.path.expanduser("~/.bashrc"), &#39;a&#39;) as f: f.write(f&#39;export JAVA_HOME={jdk_path}\n&#39;) f.write(&#39;export PATH=$JAVA_HOME/bin:$PATH\n&#39;) setup_jdk(&#39;/usr/lib/jvm/java-8-openjdk-armhf/&#39;) os.system(&#39;source ~/.bashrc&#39;) ``` #### 注意事项 - 在 ARM 平台上部署时应特别注意所选软件包是否针对该架构进行了优化编译。 - 对于银河麒麟这样的国产化操作系统而言,最好查阅其官方文档了解是否存在特殊限制条件影响第三方应用移植成功率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值