2016-08-01 16 views
0

Ich verwende Drools mit Spark in einem eigenständigen Cluster. Ich möchte die Wissenssitzung auf alle Arbeiterknoten beim Start laden, d. H. Vor der Map-Reduzierungsaufgabe. Ich habe versucht, die Statefull-Sitzung von Treiber zu Slave-Knoten zu übergeben, aber es funktioniert nicht. Aus diesem Grund benötigt mein erster Job ungefähr 900ms, um dem Knowledge Builder Regeln hinzuzufügen.Frühe Initialisierung von Objekten auf Worker-Knoten im Spark-Cluster

+1

Willkommen bei SO. Bitte lesen Sie, wie Sie ein [mcve] erstellen. – zero323

Antwort

0

Schluss Variable KnowledgeSession auf Treiber erstellen,

final StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); 

Und Sie, dass ksession Objekt an alle Arbeiter Knoten passieren kann,

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