如何使用Hadoop MapReduce配置对象传递自定义参数?
我是Hadoop MapReduce的新手。我当时正在尝试一种WordCount示例的变体。我的源文件有额外的列,我希望能够指定应该在哪一列上进行求和 在运行中。。。方法行87到116我从命令行传递了参数。我还有两个附加参数,一个有分隔符,另一个有我要对其进行筛选的列位置 我将这些值设置为如何使用Hadoop MapReduce配置对象传递自定义参数?,hadoop,mapreduce,Hadoop,Mapreduce,我是Hadoop MapReduce的新手。我当时正在尝试一种WordCount示例的变体。我的源文件有额外的列,我希望能够指定应该在哪一列上进行求和 在运行中。。。方法行87到116我从命令行传递了参数。我还有两个附加参数,一个有分隔符,另一个有我要对其进行筛选的列位置 我将这些值设置为 if (args.length == 5) { conf.set("ipPosition", args[4]); } if (args.length == 6) {
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];}周五晚上编码显然是个坏主意。在我修正了条件之后,代码运行得很好。对不起,给你们添麻烦了!