O que é o uso do 'K1 chave' na org.apache.hadoop.mapred.Mapper?
Pergunta
Estou aprendendo Apache Hadoop e eu estava olhando para o exemplo WordCount org.apache.hadoop.examples.WordCount . Eu tenho entender este exemplo, entretanto eu posso ver que a variável chave LongWritable não foi usado em
(...)
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);
}
}
(...)
O que é o uso desta variável? Alguém poderia me dar um exemplo simples onde seria usado? Graças
Solução
Quando o InputFormat é TextInputFormat, a chave é o bytes deslocamento a partir do início do arquivo de entrada atual.
O valor é simplesmente a linha de texto nesse deslocamento.
Se foi utilizado SequenceFileInputFormat, a chave seria tudo o que foi recheado para a posição-chave do 'registro. O mesmo valor.
A linha inferior é que eles tipos de chave / valor são dependentes do tipo de entrada (texto, arquivo seqüência, etc).
ckw
Outras dicas
Eu posso estar errado (eu li mapa / reduzir tutoriais, mas não tê-lo usado para projetos de reais até o momento), mas acho que em geral é o identificador de entrada de entrada; por exemplo, tuple (nome do arquivo, o número da linha). Neste caso particular, é supostamente o número da linha, e é de nenhum interesse para contagem de palavras. Pode ser usado se a ideia era, digamos, contagem de palavras agregados em diante, não base por linha por arquivo (ou para vários arquivos se a chave continha essa informação).