【问题标题】:Pentaho MongoDBInput Java integrationPentaho MongoDBInput Java 集成
【发布时间】:2013-07-22 13:25:02
【问题描述】:

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

线程“main”中的异常 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

仍然面临这个错误。

【问题讨论】:

    标签: pentaho


    【解决方案1】:

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

    -DKETTLE_PLUGIN_BASE_FOLDERS=D:/LOCATION/data-integration/plugins
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        还是同样的错误

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-22
            相关资源
            最近更新 更多