Domanda

Sto imparando Apache Hadoop e stavo guardando l'esempio WordCount org.apache.hadoop.examples.WordCount . Ho capire questo esempio, tuttavia posso vedere che la variabile chiave LongWritable non è stato utilizzato in

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

che cosa è l'uso di questa variabile? Qualcuno potrebbe darmi un semplice esempio in cui sarebbero stati utilizzati? Grazie

È stato utile?

Soluzione

Quando l'InputFormat è TextInputFormat, la chiave è il byte offset dall'inizio del file di input corrente.

Il valore è semplicemente la riga di testo in quel offset.

Se è stato utilizzato SequenceFileInputFormat, la chiave sarebbe ciò che è stato farcito nella posizione chiave del 'record. Lo stesso vale per valore.

La linea di fondo è che i tipi di chiavi / valori dipendono dal tipo di ingresso (di testo, file di sequenza, ecc).

CKW

Altri suggerimenti

potrei sbagliarmi (Ho letto mappa / ridurre tutorial, ma non l'ho ancora usato per progetti reali), ma penso che in generale è l'identificatore di entrata in ingresso; per esempio, tupla (nome del file, il numero di riga). In questo caso particolare è presumibilmente il numero di riga, ed è di nessun interesse per i conteggi di parola. Potrebbe essere utilizzato se l'idea era quella, diciamo, conteggio delle parole aggregati su, non linea per linea per file (o per più file se la chiave conteneva queste informazioni).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top