Drools と Spark をスタンドアロン クラスターで使用しています。起動時、つまりマップ削減タスクの前に、すべてのワーカー ノードにナレッジ セッションをロードしたいと考えています。Statefull セッションをドライバーからスレーブ ノードに渡そうとしましたが、うまくいきません。このため、ナレッジ ビルダーにルールを追加するだけで、最初のジョブに約 900 ミリ秒かかります。
質問する
333 次
1 に答える
0
ドライバーに KnowledgeSession の Final 変数を作成し、
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;
}
});
于 2017-01-02T09:30:28.880 に答える