2016-08-01 68 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; 
    } 
});