<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:
"Times New Roman"">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<String, StatefulKnowledgeSession>
sessions =<br>
new
HashMap<String, StatefulKnowledgeSession>();<br>
private static final String RULE_PACK_DIR = "<a href="file:///\\home\pranab\Projects\gridx\">file:///home/roger/Projects/gridx/</a>";<br>
private static final String RULE_PACK_EXT =
".drl";<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("" +
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:
"Times New Roman""><span style="font-size: 12pt; font-family: 'Times New Roman', 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:
"Times New Roman""><span style="font-size: 12pt; font-family: 'Times New Roman', serif; "><br></span></span></div>
<span style="font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-font-family:
"Times New Roman";mso-ansi-language:EN-US;mso-fareast-language:ZH-CN;
mso-bidi-language:AR-SA"><br></span><div><br></div><div> </div></div>