gpt4 book ai didi

java - 访问MapReduce中的args[0]值

转载 作者:行者123 更新时间:2023-12-01 13:28:04 25 4
gpt4 key购买 nike

我正在尝试做一项改变工作。

所以在某种程度上我想访问参数(public static void main(String[] args))。

在映射器中说出 args[0]。

有没有办法在映射器中访问这些值,而不是将它们发送到函数并访问?替代解决方案

conf.set("args", args[1]);
job1.setJarByClass(BinningDriver.class);
FileSystem fs1 = FileSystem.get(conf);
job1.setOutputKeyClass(Text.class);
job1.setOutputValueClass(Text.class);
job1.setMapperClass(BinningInput.class);
job1.setInputFormatClass(TextInputFormat.class);
job1.setOutputFormatClass(TextOutputFormat.class);
Path out = new Path(args[1]+"/Indexing"); //Output goes to user output location/indexing
if(fs1.exists(out)){
fs1.delete(out,true);
}

FileInputFormat.addInputPath(job1, new Path(args[0]));
FileOutputFormat.setOutputPath(job1, out);
}

映射器

public void setup(Context context){
Configuration conf = context.getConfiguration();
String param = conf.get("args");
System.out.println("args:"+param);
}

这有效

最佳答案

Args[]是Driver类main函数的输入参数。访问此参数的唯一方法是从驱动程序内部(此参数的范围仅限于主函数)。因此,如果您想将这些传递给映射器,则需要将它们作为参数传递(例如,将此信息添加到分布式缓存并从映射器的配置中获取它)。

如果你只是想传递一些参数,请检查this article ,并将“123”替换为 args[2] 或您感兴趣的任何参数。

如果您想传递整个文件进行处理,请执行以下操作:

示例:

Driver类中的main方法:

public static void main(String[] args) {
...
FileInputFormat.setInputPaths(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
...
try {
DistributedCache.addCacheFile(new URI(args[2]), conf);
} catch (URISyntaxException e) {
System.err.println(e.toString());
}
....
}

在Mapper中,在map()方法之前,定义configure方法(我使用的是hadoop 1.2.0):

Set<String> lines;
public void configure(JobConf job){
lines = new HashSet<>();

BufferedReader SW;
try {
localFiles = DistributedCache.getLocalCacheFiles(job);
SW = new BufferedReader(new FileReader(localFiles[0].toString()));
lines.add(SW.readLine());
SW.close();
} catch (FileNotFoundException e) {
System.err.println(e.toString());
} catch (IOException e) {
System.err.println(e.toString());
}
}

有关如何使用分布式缓存的更多信息,请参阅 API: http://hadoop.apache.org/docs/stable/api/org/apache/hadoop/filecache/DistributedCache.html

关于java - 访问MapReduce中的args[0]值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21700133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com