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