0

我在一个独立的集群中使用 Drools 和 Spark。我想在启动时(即在 map reduce 任务之前)在所有工作节点上加载知识会话。我尝试将 Statefull 会话从驱动程序传递到从节点,但它不起作用。因此,我的第一份工作需要大约 900 毫秒才能将规则添加到 Knowledge Builder。

4

1 回答 1

0

在驱动程序上创建 KnowledgeSession 的最终变量,

final StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession();

您可以将该ksession对象传递给所有工作节点,

 lines.foreachRDD(new Function<JavaRDD<String>, Void>() {
    public Void call(JavaRDD<String> rdd) throws Exception {
        List<String> facts = rdd.collect();
        //Apply rules on facts here
        ksession.execute(facts);
        return null;
    }
 });
于 2017-01-02T09:30:28.880 回答