Почему я не могу получить имя_файла и отобразить его в формате (Word File Name Count) в oop? - PullRequest
0 голосов
/ 07 марта 2020

Входные данные - это текстовый файл с именем Wiki-micro.txt ... Программа подсчета слов работает нормально. Мне нужно изменить ее и изменить формат вывода с (Количество слов) на (Слово ###) #Filename count) Я хочу, чтобы мои выходные данные были в формате (Word ##### Filename count). Можете ли вы сообщить мне, где я иду не так? Я использовал Input Split, но он не работает .. Пожалуйста, помогите мне в этом.

  public static class Map extends Mapper<LongWritable ,  Text ,  Text ,  IntWritable > {
  private final static IntWritable one  = new IntWritable( 1);
  private Text word  = new Text();

  private static final Pattern WORD_BOUNDARY = Pattern .compile("\\s*\\b\\s*");

  public void map( LongWritable offset,  Text lineText,  Context context)
    throws  IOException,  InterruptedException {

     String line  = lineText.toString();
     Text currentWord  = new Text();
     InputSplit input_split = context.getInputSplit();
     String FName = ((FileSplit) input_split).getPath().getName();

     for ( String word  : WORD_BOUNDARY .split(line)) {
        if (word.isEmpty()) {
           continue;
        }
        currentWord  = new Text(word);
        context.write(currentWord, one);
        context.write(new Text(FName), one);
     }
  }

}

1 Ответ

0 голосов
/ 07 марта 2020

Не уверен, но что произойдет, если вы замените последние 3 строки:

        currentWord  = new Text(word);
        context.write(currentWord, one);
        context.write(new Text(FName), one);

на

        currentWord  = new Text(word + "####" + FName);
        context.write(currentWord, one);
        context.write(new Text(FName), one);
...