Какая польза от «ключа K1» в org.apache.hadoop.mapred.Mapper? - PullRequest
0 голосов
/ 22 апреля 2009

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

(...)
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);
      }
    }
(...)

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

Ответы [ 2 ]

1 голос
/ 23 апреля 2009

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

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

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

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

1009 * CKW *

1 голос
/ 22 апреля 2009

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

...