gpt4 book ai didi

java - hadoop没有将输出写入文件

转载 作者:行者123 更新时间:2023-12-02 22:05:07 26 4
gpt4 key购买 nike

我的MapReduce代码遇到问题。我的代码将把最大的高库存和相应的名称从输入写入输出文件。问题是正在写入零字节,并且我在输出中得到一个空文件。

HighestStock.java

JobConf conf = new JobConf(HighestStock.class);
conf.setJobName("Highest Stock");

FileInputFormat.addInputPath(conf, new Path(args[0]);
FileOutputFormat.setOutputPath(conf, new Path(args[1]);

conf.setMapperClass(HighStockMapper.class);
conf.setReducerClass(HighStockReducer.class);

conf.setOutputKeyClass(Text.class);
conf.setOutputValueClass(IntWritable.class);

JobClient.runJob(conf);

HighStockMapper.java
 public class HighStockMapper implements Mapper<LongWritable, Text, Text, IntWritable> {
public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
String line = value.toString();
String[] tokens = line.split(",");
String name = tokens[0];
int high = (int) Double.parseDouble(tokens[3]);
context.write(new Text(name), new IntWritable(high);
}

HighStockReducer.java
public class HighStockReducer extends MapReduceBase
implements Reducer<Text, IntWritable, Text, IntWritable> {
public void reduce (Tex key, Iterator<IntWritable> values,
OutputCollector<Text, IntWritable> output, Reporter reporter)
throws IOExceptiion {
int maxValue = Integer.MIN_VALUE;
while (values.hasNext()) {
maxValue = Math.max(maxValue, values.next().get());
}
output.collect(key, new IntWritable(maxValue));
}
}

任何调试方面的帮助将不胜感激!

命令行结果的屏幕截图

最佳答案

你那里确实有错别字。我认为这甚至不会编译。

context.write(new Text(name), new IntWritable(high); // Missing closing )


throws IOExceptiion { // extra i

我认为这不是您正在运行的实际代码吗?您可以发布运行作业的命令行结果(包括命令和计数器输出)吗?

编辑:@ anna-mai,您的屏幕快照显示映射器没有发出任何记录(映射输出记录= 0),因此问题出在您的映射器中。

我注意到您缺少从映射器扩展MapReduceBase的功能。尝试添加以下内容:
public class HighStockMapper extends MapReduceBase implements Mapper

关于java - hadoop没有将输出写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26045890/

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