在Kettle上加载转换时发现缺少插件
每当我从命令行运行提取时,我都会收到此错误,而不是在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依赖关系如下。
rhino js pentaho-kettle kettle-core pentaho-kettle kettle-engine pentaho-library libbase 5.1.0.0-752 pentaho pentaho-big-data-plugin 5.1.0.0-751 pentaho pentaho-mongodb-plugin 5.1.0.0-751 org.mongodb mongo-java-driver 2.11.1 pentaho metastore 5.1.0.0-751 pentaho-library libformula simple-jndi simple-jndi org.drools drools-compiler org.drools drools-core org.postgresql postgresql
我错过了什么吗?
在init kettleEnviroment之前
KettleEnviroment.init();
你应该添加这样的代码
StepPluginType.getInstance().getPluginFolders().add(new PluginFolder("your plugins path", false, true));
将MongoDB插件作为依赖项仅适用于编译。 当PDI运行时,它会在当前目录下查找插件/文件夹,并从那里加载所有插件。 您可以通过设置KETTLE_PLUGIN_BASE_FOLDERS系统属性来覆盖该位置。 无论哪种方式,你都需要一个插件/文件夹,并将MongoDB插件包(而不是JAR)解压缩到插件/中。 这应该在plugins /下放置一个名为pentaho-mongodb-plugin的文件夹,如果PDI指向那个插件/文件夹,它应该在运行时加载并成功使用该插件。
您必须从Kettle安装目录运行Kitchen。
正如这里所写: http : //wiki.pentaho.com/display/EAI/Kitchen+User+Documentation
在运行下面的示例之前,请确保您位于Kettle目录中。 如果将这些脚本放入批处理文件或shell脚本中,只需将更改目录添加到安装目录即可
只需编辑spoon.sh并添加即可
OPT="$OPT -DKETTLE_PLUGIN_BASE_FOLDERS=$BASEDIR/plugins"
就在设置OPT变量的行之后。
这实际上是来自mattyb的解决方案。 编辑spoon.sh将解决问题。
另一种解决方案是在$ {KETTLE_HOME} /.bill目录中创建一个指向plugins文件夹的符号链接。