1

我有一个简单的 pentaho 格式,MongoDBInput 与 JSON 输出相连。当我在 Pentaho Design studio 中看到预览时,我能够获取 json,但是当我尝试与 java 集成并运行转换时,它的抛出错误 -

线程“主”org.pentaho.di.core.exception.KettleXMLException 中的异常:从 XML 文件读取对象时出错

无法从 XML 步骤 nodeorg.pentaho.di.core.exception.KettleStepLoaderException 加载步骤信息:无法加载 ID 为 [MongoDbInput] 的步骤/插件的类。检查该插件是否在 Kettle 发行版的 plugins 子目录中可用。

无法为 ID 为 [MongoDbInput] 的步骤/插件加载类。检查该插件是否在 Kettle 发行版的 plugins 子目录中可用。

我的代码是:

 import java.io.IOException;
import java.util.List;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.core.*;
import org.pentaho.di.core.exception.*;

public class KettleConnector {

    public static void main(String[] args) throws KettleException, IOException{

        KettleEnvironment.init(false);

        EnvUtil.environmentInit();

        TransMeta transMeta = new TransMeta("D:\\mangoes.ktr");

        Trans trans = new Trans(transMeta);

        trans.execute(null); // You can pass arguments instead of null.

        trans.waitUntilFinished();

        Result r = trans.getResult();

        List<RowMetaAndData> rowsResult = r.getRows();
        System.out.println(trans.getTransMeta());

        if (trans.getErrors() > 0) {

        throw new RuntimeException();

        }

    }

}

它适用于 mysql 转换。

我已经包含了 mongo-2.4jar 和 mongo-java-driver-2.7.2.jar

仍然面临这个错误。

4

4 回答 4

1

请检查您是否在运行时添加 VM 参数:

-DKETTLE_PLUGIN_BASE_FOLDERS=D:/LOCATION/data-integration/plugins
于 2013-07-24T11:33:20.270 回答
0

嗯......在马特的帮助下想通了。虽然这个答案不适合 java WAR 文件的设计方式,但本质上您需要将整个插件文件夹作为参数 (-D) 传递给您的应用服务器。这是一个例子

-DKETTLE_PLUGIN_BASE_FOLDERS=/Users/user1/Documents/pdi-ce-5.1.0/data-integration/plugins

于 2014-11-13T22:35:16.077 回答
0

马特..我正在使用 pentaho 水壶 5.1。需要从插件文件夹中包含哪些 jar 文件才能使 Mongodb 步骤正常工作。我已经包含了 plugins/pentaho-mongodb-plugin 中的所有内容?

仍然得到同样的错误

于 2014-11-13T21:25:46.390 回答
0

MongoDB 步骤是 Pentaho 数据集成 (PDI) 插件。您使用的是什么版本的 PDI?如果您使用的是 4.4.0,那么您将需要包含 MongoDB 步骤的大数据插件。从您启动应用程序的位置,您需要一个包含大数据插件内容的 plugins/steps 文件夹(pentaho-big-data-plugin 文件夹)。然后您对 KettleEnvironment.init() 的调用将加载插件,您将可以访问 MongoDB 步骤。

于 2013-07-23T15:07:45.823 回答