0

Drools と Spark をスタンドアロン クラスターで使用しています。起動時、つまりマップ削減タスクの前に、すべてのワーカー ノードにナレッジ セッションをロードしたいと考えています。Statefull セッションをドライバーからスレーブ ノードに渡そうとしましたが、うまくいきません。このため、ナレッジ ビルダーにルールを追加するだけで、最初のジョブに約 900 ミリ秒かかります。

4

1 に答える 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 に答える