【问题标题】:Hadoop Configured getConf() returning nullHadoop 配置的 getConf() 返回 null
【发布时间】:2014-10-22 07:31:10
【问题描述】:

我有一个在 tomcat 上运行的 Spring MVC 应用程序,它提交 MapReduce 作业并分析结果。我的 Spring Batch tasklet 能够成功调用 MR 驱动程序类并运行作业。驱动类扩展Configured 并实现Tool 并且能够轻松地操作HDFS 文件。包含驱动类和 MR 代码的 maven 模块作为依赖添加到 webapp 模块。

为了分析,我在扩展 Configured 的 webapp 模块中创建了一个新类。这个类应该读取一个 HDFS 文件并对其进行分析。但是,当我尝试创建 FileSystem 对象时,我得到一个空指针异常。

public class ReportAnalyzer extends Configured{

    public void analyze(String path) throws Exception{
        FileSystem hdfs=FileSystem.get(getConf()); <-- NPE

        //create Path, etc.
    }
}  

为了获得FileSystem 对象,还有什么需要做的吗?通过 mapreduce 模块将 hadoop 依赖项添加到 webapp。

【问题讨论】:

    标签: java spring maven tomcat hadoop


    【解决方案1】:

    你要么必须实现Configured(Configuration conf)构造函数

    public ReportAnalyzer(Configuration conf){
        super(conf);
    }
    

    或者在调用analyze()之前使用setConf()

    【讨论】:

    • 这两种方法都要求我拥有配置对象,我试图从类路径中自动填充它,就像我们在驱动程序类中使用它时一样。
    • 使用 Configuration 构造函数 new Configuration() 只要你的类路径中有正确的 hadoop 配置 xmls 就足够了。
    猜你喜欢
    • 2012-07-13
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多