我有一个在tomcat上运行的Spring MVC应用程序,它提交MapReduce作业并分析结果。 My Spring Batch tasklet能够成功调用MR驱动程序类并运行该作业。驱动程序类扩展Configured
并实现Tool
,并且可以轻松地操作HDFS文件。包含驱动程序类和MR代码的maven模块作为依赖项添加到webapp模块。
为了进行分析,我在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。
答案 0 :(得分:1)
您必须实施Configured(Configuration conf)
构造函数
public ReportAnalyzer(Configuration conf){
super(conf);
}
或在致电setConf()
之前使用analyze()
。