java - Map reduce作业执行但不产生输出

标签 java hadoop mapreduce

请寻求帮助。
执行mapreduce作业,但不产生任何输出。这是一个简单的程序,可以计算文件中单词的总数。我开始非常简单地确保它可以与包含以下内容的一行的txt文件一起使用:

tiny country second largest country second tiny food exporter second second second



不幸的是,没有,关于下一个看点的任何建议将不胜感激。我已经剪切并粘贴了输出日志的最后一部分。
File System Counters
    FILE: Number of bytes read=890
    FILE: Number of bytes written=947710
    FILE: Number of read operations=0
    FILE: Number of large read operations=0
    FILE: Number of write operations=0
Map-Reduce Framework
    Map input records=1
    Map output records=1
    Map output bytes=87
    Map output materialized bytes=95
    Input split bytes=198
    Combine input records=0
    Combine output records=0
    Reduce input groups=1
    Reduce shuffle bytes=95
    Reduce input records=1
    Reduce output records=1
    Spilled Records=2
    Shuffled Maps =1
    Failed Shuffles=0
    Merged Map outputs=1
    GC time elapsed (ms)=7
    Total committed heap usage (bytes)=468713472
Shuffle Errors
    BAD_ID=0
    CONNECTION=0
    IO_ERROR=0
    WRONG_LENGTH=0
    WRONG_MAP=0
    WRONG_REDUCE=0
File Input Format Counters 
    Bytes Read=82
File Output Format Counters 
    Bytes Written=97
Process finished with exit code 0
    public class Map extends Mapper<LongWritable, Text, Text, 
        IntWritable>{

    @Override
    public void map(LongWritable key, Text value, Context context)
            throws IOException, InterruptedException {

        String line = value.toString();
        String[] datas = line.split("\t");

            for(String data: datas) {
                Text outputKey = new Text(data);
                IntWritable outputValue = new IntWritable();
                context.write(outputKey, outputValue);
            }
    }
    }
public class Reduce extends Reducer<Text, IntWritable, Text, 
    IntWritable> {

    @Override
    public void reduce(final Text outputKey,
                       final Iterable<IntWritable> values,
                       final Context context)
            throws IOException, InterruptedException {

        int sum = 0;
        for(IntWritable value : values)
        {
            sum += value.get();
        }
        context.write(outputKey, new IntWritable(sum));
    }
}
public class Main extends Configured implements Tool {


    @Override
    public int run(String[] args) throws Exception {

        Job job = Job.getInstance(getConf());
        job.setJobName("WordCount");
        job.setJarByClass(Main.class);

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

        job.setMapperClass(Map.class);
        job.setReducerClass(Reduce.class);

        Path inputFilePath = new Path("/Users/francesco/input/input.txt");
        Path outputFilePath = new Path("/Users/francesco/output/first");

        FileInputFormat.addInputPath(job, inputFilePath);
        FileOutputFormat.setOutputPath(job, outputFilePath);

        return job.waitForCompletion(true) ? 0 : 1;
    }

    public static void main(String[] args) throws Exception{
        int exitCode = ToolRunner.run(new Main(), args);
        System.exit(exitCode);
    }
}

最佳答案

您无需设置任何IntWritable值即可在映射器中发出:

IntWritable outputValue = new IntWritable();

需要替换为:
IntWritable outputValue = new IntWritable(1);

关于java - Map reduce作业执行但不产生输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53895312/

相关文章:

java - 复选框树未按预期工作

java - 延迟数据导致 OnCreate 上出现 NullPointerException

hadoop - 如何理解 "hadoop is good for sequential data access"

hadoop - 单个datanode在Hadoop 5节点集群中存储更多数据

hadoop - 将有序 key 发送到正确的 reducer

hadoop - Log4j 不写入 HDFS/Log4j.properties

java - 使用 HttpClient 进行客户端身份验证

java - 如何在 Java 9+ 中设置默认垃圾收集器?

java - Hadoop map reduce 整个文件输入格式

java - 找不到hbase.mapreduce.TableOutputFormat