2016-08-01 69 views
0

我在独立集群中使用Drools with Spark。我想在启动时的所有工作节点上加载知识会话,即在地图缩小任务之前。我试过从驱动程序传递Statefull会话到从节点,但它不工作。由于这个原因,我的第一份工作大约需要900毫秒才能将规则添加到知识生成器中。Spark集群中Worker节点上对象的早期初始化

+1

欢迎SO。请阅读如何创建[mcve]。 – zero323

回答

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; 
    } 
});