Добавьте заголовок в выходной файл перед сокращением в Hadoop - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел записать заголовок в выходной файл перед содержимым моей функции Reduce. Как мне это сделать?

Вот мои функции Map и Reduce -

public static class MapForWordCountWithoutWorld extends Mapper<LongWritable, Text, Text, IntWritable> {
    static Date lastDate = new Date(120, 4, 8);
    static Date ignoreDate = new Date(119, 12, 31);
    public void map(LongWritable key, Text value, Context con) throws IOException, InterruptedException {
        String line = value.toString();
        String[] words = line.split(",");
        if (words[0].equals("date")) {
            return;
        }else if(!words[1].toLowerCase().equals("world")){
            try {
                Date date1 = new SimpleDateFormat("yyyy-MM-dd").parse(words[0]);
                if(date1.getYear() > 119) {
                    if (date1.before(lastDate) || date1.equals(lastDate)) {
                        Text outputKey = new Text("Infected Population");
                        IntWritable outputValue = new IntWritable(new Integer(words[2]));
                        con.write(outputKey, outputValue);
                    }
                }


            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }
}

public static class ReduceForWordCount extends Reducer<Text, IntWritable, Text, IntWritable> {
    public void reduce(Text word, Iterable<IntWritable> values, Context con)
            throws IOException, InterruptedException {
        int sum = 0;
        for (IntWritable value : values) {
            sum += value.get();
        }
        con.write(word, new IntWritable(sum));
    }
}

Сейчас я получаю только пару ключ-значение. Но не удалось добавить заголовок в выходной файл

...