如何使用Hadoop MapReduce配置对象传递自定义参数?

如何使用Hadoop MapReduce配置对象传递自定义参数?,hadoop,mapreduce,Hadoop,Mapreduce,我是Hadoop MapReduce的新手。我当时正在尝试一种WordCount示例的变体。我的源文件有额外的列,我希望能够指定应该在哪一列上进行求和 在运行中。。。方法行87到116我从命令行传递了参数。我还有两个附加参数,一个有分隔符,另一个有我要对其进行筛选的列位置 我将这些值设置为 if (args.length == 5) { conf.set("ipPosition", args[4]); } if (args.length == 6) {

我是Hadoop MapReduce的新手。我当时正在尝试一种WordCount示例的变体。我的源文件有额外的列,我希望能够指定应该在哪一列上进行求和

在运行中。。。方法行87到116我从命令行传递了参数。我还有两个附加参数,一个有分隔符,另一个有我要对其进行筛选的列位置

我将这些值设置为

    if (args.length == 5) {
        conf.set("ipPosition", args[4]);
    }
    if (args.length == 6) {
        conf.set("delimiter", args[5]);
    }
但是,当我尝试在示例方法的configure行28中获取这些值时,它们返回null

    public void configure(JobConf job) {
        try {
            String varIpPosition = job.get("ipPosition");
            if (varIpPosition != null) {
                ipPosition = Integer.parseInt(varIpPosition);
            }
            String varDelimiter = job.get("delimiter");
            if (varDelimiter != null) {
                if (varDelimiter == "comma") {
                    lineDelimiter = ",";
                } else {
                    lineDelimiter = " ";
                }
            }
            System.err.println("IP Position" + ipPosition);
        } catch (Exception ex) {
            System.err.println("Error Configuring Job :"
                    + job.get("ipPosition") + " - "
                    + StringUtils.stringifyException(ex));
        }
    }

配置参数设置不正确,还是检索不正确?感谢您的帮助。

如上述评论所述。这是一个“代码错误”。API没有问题。如果条件是

if (args.length >= 5) {
    conf.set("ipPosition", args[4]);
}
if (args.length >= 6) {
    conf.set("delimiter", args[5]);
}

谢谢。

好吧,那对我来说太糟糕了。我如何期望下面的两个If条件都为真?如果args.length==5{conf.setipPosition,args[4];}如果args.length==6{conf.setdelimiter,args[5];}周五晚上编码显然是个坏主意。在我修正了条件之后,代码运行得很好。对不起,给你们添麻烦了!