2012-06-08 24 views

risposta

13

(nuova API): La classe predefinita Mapper ha un metodo run che assomiglia a questo:

public void run(Context context) throws IOException, InterruptedException { 
    setup(context); 
    while (context.nextKeyValue()) { 
     map(context.getCurrentKey(), context.getCurrentValue(), context); 
    } 
    cleanup(context); 
} 

I metodi Context.nextKeyValue(), Context.getCurrentKey() e Context.getCurrentValue() sono wrapper per le RecordReader metodi. Vedi il file sorgente src/mapred/org/apache/hadoop/mapreduce/MapContext.java.

Quindi, questo ciclo esegue e chiama il metodo map(K, V, Context) dell'implementazione Mapper.

In particolare, che altro vorresti sapere?

+0

@ Chris..Thts molto utile .. ... e puoi spiegarci che split e dischi sono in immagine in un registratore? Sono confuso ... – Amnesiac

+0

Le suddivisioni sono create da InputFormat e derivano dai file di input che si passano, indipendentemente dal fatto che i file di input siano divisibili e altre opzioni passate come la dimensione massima di max/min –

+0

Ogni divisione è quindi elaborato per produrre i record che vengono passati al metodo della mappa –

0

org.apache.hadoop.mapred.MapTask - runNewMapper()

Imp passi:

  1. crea nuovo mapper

  2. ottenere spaccato di ingresso per il mapper

  3. ottieni il recordreader per lo split

  4. inizializzare lettore record di

  5. con lettore di registrazione Scorrere getNextKeyVal() e la chiave, val di mapper mappa metodo

  6. passare ripulire