Spark Cluster中Worker节点上对象的早期初始化

时间:2016-08-01 11:06:38

标签: apache-spark drools apache-spark-standalone

我在一个独立的群集中使用带有Spark的Drools。我想在启动时,即在map reduce任务之前,在所有工作节点上加载知识会话。我已经尝试将Statefull会话从驱动程序传递到从属节点,但它无法正常工作。因此,我的第一份工作大约需要900毫秒才能向知识生成器添加规则。

1 个答案:

答案 0 :(得分: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;
    }
 });