<div><br></div>We are working on a project to integrate Drools with Apache Hadoop, <a href="http://hadoop.apache.org/">http://hadoop.apache.org/</a>, and run into some road blocks. We would very much appreciate any suggestions/help from this list. <div>
<br></div><div><p class="MsoNormal" style="margin-bottom:12.0pt"><span style="mso-fareast-font-family:
&quot;Times New Roman&quot;">We have an app where we call drools rule engine inside the reducer task of a Hadoop map reduce job. It throws a NullPointerException when we the rule package resource to the knowledge
builder. The same code works fine when run as part of a stand alone app. <br>
<br>
Code:<br>
<br>
    private static Map&lt;String, StatefulKnowledgeSession&gt;
sessions =<br>
            new
HashMap&lt;String, StatefulKnowledgeSession&gt;();<br>
    private static final String RULE_PACK_DIR = &quot;<a href="file:///\\home\pranab\Projects\gridx\">file:///home/roger/Projects/gridx/</a>&quot;;<br>
    private static final String RULE_PACK_EXT =
&quot;.drl&quot;;<br>
    <br>
<br>
    public int process(String rulePackage, String dateTime,
String type) throws TException {<br>
        int rate = 0;<br>
        StatefulKnowledgeSession session =
sessions.get(rulePackage);<br>
        if (null == session){<br>
           
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();<br>
            String
rulePackPath = RULE_PACK_DIR + rulePackage + RULE_PACK_EXT;<br>
           
kbuilder.add( ResourceFactory.newFileResource(rulePackPath ),
ResourceType.DRL);<br>
            if (
kbuilder.hasErrors() ) {<br>
               
System.err.println( kbuilder.getErrors().toString() );<br>
            }<br>
           
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();<br>
           
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());<br>
<br>
            session =
kbase.newStatefulKnowledgeSession();<br>
            sessions.put(rulePackage,
session);<br>
        }<br>
<br>
        ContractRule contractRule = new
ContractRule();<br>
        contractRule.prepare(dateTime,
type);;<br>
        FactHandle ruleHandle =
session.insert(contractRule);<br>
        session.fireAllRules();<br>
        System.out.println(&quot;&quot; +
contractRule);<br>
        rate = contractRule.getRate();<br>
        session.retract(ruleHandle);<br>
<br>
        return rate;<br>
    }</span></p><p class="MsoNormal" style="margin-bottom:12.0pt"><span style="mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style="font-size: 12pt; font-family: &#39;Times New Roman&#39;, serif; ">This line throws the exception:<br>kbuilder.add( ResourceFactory.newFileResource(rulePackPath ), ResourceType.DRL);<br>
<br>It works fine as a stand alone app, outside hadoop<br><br>Roger Smith<br></span></span></p><div><span style="mso-fareast-font-family:
&quot;Times New Roman&quot;"><span style="font-size: 12pt; font-family: &#39;Times New Roman&#39;, serif; "><br></span></span></div>

<span style="font-size:12.0pt;font-family:&quot;Times New Roman&quot;,&quot;serif&quot;;mso-fareast-font-family:
&quot;Times New Roman&quot;;mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;
mso-bidi-language:AR-SA"><br></span><div><br></div><div> </div></div>