2
我有一个运行在Tomcat上的Spring MVC应用程序,它提交MapReduce作业并分析结果。我的Spring Batch tasklet能够成功调用MR驱动程序类并运行作业。驱动程序类扩展Configured
并实现Tool
,并且很容易操作HDFS文件。包含驱动程序类和MR代码的maven模块作为依赖项添加到webapp模块中。Hadoop配置getConf()返回null
为了分析,我在webapp模块中创建了一个新的类,它扩展了Configured
。这个类应该读取一个HDFS文件并对其进行分析。但是,当我尝试创建FileSystem
对象时,我收到空指针异常。
public class ReportAnalyzer extends Configured{
public void analyze(String path) throws Exception{
FileSystem hdfs=FileSystem.get(getConf()); <-- NPE
//create Path, etc.
}
}
为了得到FileSystem
对象,还有什么需要做的吗? hadoop依赖关系通过mapreduce模块添加到webapp。
这两种方法都要求我有配置对象,我试图从类路径中自动填充配置对象,就像我们在驱动程序类中使用它时那样。 – 2014-10-25 07:24:51
如果只有在类路径中有适当的hadoop配置xmls,那么使用'Configuration'构造函数'new Configuration()'就足够了。 – user3122114 2014-10-25 21:30:43