Java 如何访问hadoop分布式缓存中的drl文件?

Java 如何访问hadoop分布式缓存中的drl文件?,java,hadoop,drools,Java,Hadoop,Drools,我在Eclipse3.8中做了一个drools程序 我有两个口水档案 我想将我的Drools文件共享给所有映射器和还原器。那么如何使用hadoop分布式缓存呢?在此之前,本地文件系统或HDFS中应该存在文件 下面是一个程序,说明如何在没有分布式缓存的情况下将Drools文件访问到程序中。看看它,让我清楚地了解如何将drools存储到分布式缓存中,以及如何在程序中访问这些文件 public class JUnitTests { @Test public void testMapReduceJob

我在Eclipse3.8中做了一个drools程序

我有两个口水档案

我想将我的Drools文件共享给所有映射器和还原器。那么如何使用hadoop分布式缓存呢?在此之前,本地文件系统或HDFS中应该存在文件

下面是一个程序,说明如何在没有分布式缓存的情况下将Drools文件访问到程序中。看看它,让我清楚地了解如何将drools存储到分布式缓存中,以及如何在程序中访问这些文件

public class JUnitTests {

@Test
public void testMapReduceJob1() throws Exception {
    String drlDir = "/Users/mbp_user/devel/java/drools-hadoop/drl/";
    String hdfsOut = "output";
    FileSystem fs = FileSystem.get(new Configuration());
    fs.delete(new Path(hdfsOut), true);

    MapReduceByStateless.main(new String[] {
            "-files",
            drlDir + "rule1.drl",
            "input",
            "output"
            }
    );
}

@Test
public void testMapReduceJob2() throws Exception {
    String drlDir = "/Users/mbp_user/devel/java/drools-hadoop/drl/";
    String hdfsOut = "output";
    FileSystem fs = FileSystem.get(new Configuration());
    fs.delete(new Path(hdfsOut), true);

    MapReduceByStateful.main(new String[] {
            "-files",
            drlDir + "rule2.drl",
            "input",
            "output"
            }
    );
}
}

这几乎不是一个流口水的问题。在main中,第二个参数是一个字符串,它是文件的路径名:任何有效的路径名都应该有效。-MapReduceByStateful.main中发生了什么?public static void mainString[]args引发异常{int ret=ToolRunner.runnew MapReduceByStateful,args;System.exitret;}非常有趣。ToolRunner.run中会发生什么情况,尤其是使用args[1]?