2013-06-08 10 views
5

Ho 2 file di testo da 1 MB ciascuno memorizzati in HDFS come input per il mio programma MapReduce. Nella riga seguente, consideriamo la coppia di input per la mappa().Qual è l'input chiave LongWritable per la mappa()?

class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { 

Qual è la chiave LongWritable qui? Come è assunto da MapReduce? Ogni riga di testo nel file di input ha una chiave o una singola chiave per il testo completo nel file (cioè tutte le linee alla volta)?

risposta

-1

è compensato byte della linea o si può dire il numero di riga

+1

dovresti aver saltato la parte "o" della risposta. l'offset non è la linea n. è la posizione in byte della linea. – Tariq

+0

Non ho capito. Come mai l'offset di una riga è uguale al numero di quella linea? Vorrei chiedervi di aiutarmi a capirlo. – Tariq

+0

@ChrisGerken hai sbagliato – slater

6

1- La chiave qui è la LongWritable offset della linea che significa position di quella riga nel file e not il numero di riga. C'è a lot di differenza tra questi 2.

2- È not assumed da struttura MapReduce. È compito dello InputFormat che si sta utilizzando nel proprio lavoro MR per decidere. L'impostazione predefinita è TextInputFormat che fornisce l'offset di byte della riga come chiave, come nel tuo caso.

3- Bene, dipende ancora dal vostro InputFormat. Se si utilizza TextInputFormat, ciascuna riga verrà considerata come valore con il relativo offset come chiave. Ma potresti avere il tuo InputFormat personalizzato che potrebbe darti solo una chiave per l'intero file e tutte le righe di quel file come valore.

+1

la posizione non è chiaramente il numero. posso avere il motivo per il downvote? IMHO, è la definizione corretta, basata su ciò che ho imparato su mapreduce. inoltre, potresti indicarmi la documentazione a cui ti riferisci. lo apprezzerei davvero. grazie. – Tariq

Problemi correlati