Каково использование «ключа K1» в org.apache.hadoop.mapred.Mapper?

StackOverflow https://stackoverflow.com/questions/778497

  •  13-09-2019
  •  | 
  •  

Вопрос

Я изучаю Apache Hadoop и рассматривал пример WordCount. org.apache.hadoop.examples.WordCount.Я понимаю этот пример, однако вижу, что переменная Длинный записываемый ключ не использовался в

(...)
public void map(LongWritable key, Text value, 
                    OutputCollector<Text, IntWritable> output, 
                    Reporter reporter) throws IOException {
      String line = value.toString();
      StringTokenizer itr = new StringTokenizer(line);
      while (itr.hasMoreTokens()) {
        word.set(itr.nextToken());
        output.collect(word, one);
      }
    }
(...)

какое использование этой переменной?Может ли кто-нибудь дать мне простой пример, где он будет использоваться?Спасибо

Это было полезно?

Решение

Если InputFormat имеет значение TextInputFormat, ключ — это смещение в байтах от начала текущего входного файла.

Значение — это просто строка текста с этим смещением.

Если бы использовался SequenceFileInputFormat, ключом было бы то, что было вставлено в позицию ключа записи.То же самое и со значением.

Суть в том, что типы ключей/значений зависят от типа ввода (текст, файл последовательности и т. д.).

по часовой стрелке

Другие советы

Я могу ошибаться (я читал учебники по карте/сокращению, но еще не использовал их в реальных проектах), но я думаю, что в целом это идентификатор входной записи;например, кортеж (имя файла, номер строки).В данном конкретном случае это предположительно номер строки, и он не имеет значения для подсчета слов.Его можно было бы использовать, если бы идея заключалась, скажем, в агрегировании количества слов по строкам, а не по файлам (или для нескольких файлов, если ключ действительно содержал эту информацию).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top