【问题标题】:Missing plugins found while loading a transformation on Kettle在 Kettle 上加载转换时发现缺少插件
【发布时间】:2015-04-12 21:30:45
【问题描述】:

每当我从命令行而不是在 Spoon UI 中运行提取时,我都会收到此错误。

Missing plugins found while loading a transformation

Step : MongoDbInput

        at org.pentaho.di.job.entries.trans.JobEntryTrans.getTransMeta(JobEntryTrans.java:1200)
        at org.pentaho.di.job.entries.trans.JobEntryTrans.execute(JobEntryTrans.java:643)
        at org.pentaho.di.job.Job.execute(Job.java:714)
        at org.pentaho.di.job.Job.execute(Job.java:856)
        ... 4 more
Caused by: org.pentaho.di.core.exception.KettleMissingPluginsException:
Missing plugins found while loading a transformation

我的maven依赖如下。

    <dependency>
      <groupId>rhino</groupId>
      <artifactId>js</artifactId>
    </dependency>
    <dependency>
      <groupId>pentaho-kettle</groupId>
      <artifactId>kettle-core</artifactId>
    </dependency>
    <dependency>
      <groupId>pentaho-kettle</groupId>
      <artifactId>kettle-engine</artifactId>
    </dependency>
    <dependency>
      <groupId>pentaho-library</groupId>
      <artifactId>libbase</artifactId>
      <version>5.1.0.0-752</version>
    </dependency>
    <dependency>
      <groupId>pentaho</groupId>
      <artifactId>pentaho-big-data-plugin</artifactId>
      <version>5.1.0.0-751</version>
    </dependency>
    <dependency>
      <groupId>pentaho</groupId>
      <artifactId>pentaho-mongodb-plugin</artifactId>
      <version>5.1.0.0-751</version>
    </dependency>
    <dependency>
      <groupId>org.mongodb</groupId>
      <artifactId>mongo-java-driver</artifactId>
      <version>2.11.1</version>
    </dependency>
    <dependency>
      <groupId>pentaho</groupId>
      <artifactId>metastore</artifactId>
      <version>5.1.0.0-751</version>
    </dependency>
    <dependency>
      <groupId>pentaho-library</groupId>
      <artifactId>libformula</artifactId>
    </dependency>
    <dependency>
      <groupId>simple-jndi</groupId>
      <artifactId>simple-jndi</artifactId>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-compiler</artifactId>
    </dependency>
    <dependency>
      <groupId>org.drools</groupId>
      <artifactId>drools-core</artifactId>
    </dependency>
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
    </dependency>
  </dependencies>

我错过了什么吗?

【问题讨论】:

  • 在 cassandra(cassandrainput 步骤)中,它们是 PDI 5.1 中的一个问题,所以不确定这个问题是否也存在于 mongodb 中。
  • @WorkingHard.. 建议的解决方案是什么?
  • 更改 PDI 版本,使用任何其他版本。我不确定 mongo 的情况,但在 cassandra 中你必须避免使用这个版本。
  • @WorkingHard.. 这是否意味着我需要更改整个版本的水壶?到 5.2?
  • 是的,您可以更改并尝试..

标签: java maven pentaho data-integration


【解决方案1】:

在初始化kettleEnviroment之前

KettleEnviroment.init();

你应该像这样添加这个代码

StepPluginType.getInstance().getPluginFolders().add(new PluginFolder("your plugins path", false, true));

【讨论】:

    【解决方案2】:

    将 MongoDB 插件作为依赖项仅适用于编译。当 PDI 运行时,它会在当前目录下查找 plugins/ 文件夹,并从那里加载所有插件。您可以通过设置 KETTLE_PLUGIN_BASE_FOLDERS 系统属性来覆盖该位置。无论哪种方式,您都需要一个 plugins/ 文件夹并将 MongoDB 插件包(而不是 JAR)解压缩到 plugins/ 中。这应该在 plugins/ 下放置一个名为 pentaho-mongodb-plugin 的文件夹,如果 PDI 指向该 plugins/ 文件夹,它应该在运行时成功加载和使用该插件。

    【讨论】:

    • 就没有别的办法了吗?一个 Web 应用程序正在运行整个转换。 Web 应用程序依赖项由 maven 指定。无论如何,有什么可以对转换进行mavenized?
    【解决方案3】:

    您必须从 Kettle 安装目录运行 Kitchen。
    如此处所写: http://wiki.pentaho.com/display/EAI/Kitchen+User+Documentation

    请确保您位于 Kettle 目录中 在运行下面的示例之前。如果将这些脚本放入 批处理文件或 shell 脚本,只需将目录更改为 安装目录

    【讨论】:

    • 没有办法maven化整个过程?
    • 非常有帮助,谢谢。如果你不使用插件,你可以在任何地方运行 kitchen.sh,但是一旦你使用了插件,你必须先 cd 到 kitchen 文件夹。谁知道!
    【解决方案4】:

    只需编辑spoon.sh并添加

    OPT="$OPT -DKETTLE_PLUGIN_BASE_FOLDERS=$BASEDIR/plugins"
    

    就在设置 OPT 变量的那一行之后。

    这实际上是 mattyb 的解决方案。编辑spoon.sh 将永久解决问题。

    另一种解决方案是在 ${KETTLE_HOME}/.kettle 目录中创建一个指向插件文件夹的符号链接。

    【讨论】:

      【解决方案5】:

      从版本 7 更新到 8.3 后,我收到了相同的错误消息。就我而言,是“中止”和“参加”步骤导致了错误。在版本 8 中,这两个步骤不再是库“kettle-engine-8.3.0.0-371.jar”的一部分,它们现在是库“pdi-core-plugins-impl-8.3.0.0-371”的一部分。 jar”在一个新的插件中。我必须在 maven-dependencies 中添加插件:

      <dependency>
        <groupId>org.pentaho.di.plugins</groupId>
        <artifactId>pdi-core-plugins-impl</artifactId>
        <version>8.3.0.0-371</version>
      </dependency>
      

      但这还不是全部,我仍然收到错误消息。原因:“要在嵌入式 Pentaho 服务器上使用非本地插件,您必须配置服务器以查找插件所在的位置”(https://help.hitachivantara.com/Documentation/Pentaho/8.0/Developer_Center/PDI/Embed)。 所以在我的 java 代码中的 KettleEnvironment.init() 行上方,我添加了这个:

      System.setProperty("KETTLE_PLUGIN_CLASSES", "org.pentaho.di.trans.steps.abort.AbortMeta,org.pentaho.di.trans.steps.append.AppendMeta");
      KettleEnvironment.init();
      

      这种方式对我有用。还有一个建议是使用插件文件夹(请参阅链接或其他答案)并改用 KETTLE_PLUGIN_BASE_FOLDER。

      不幸的是,错误消息没有提到缺少哪个插件。我删除并添加了它们(在我本地的 Spoon 应用程序中),直到找到丢失的那个。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-09-09
        • 2011-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-17
        • 2014-09-08
        相关资源
        最近更新 更多