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
0
A
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;
}
});
Willkommen bei SO. Bitte lesen Sie, wie Sie ein [mcve] erstellen. – zero323