2016-08-10 40 views
5

Chcę uzyskać liczbę wejść i wyjść fazy mapy oraz fazę zmniejszania i czas kompletnej mapy/zmniejszyć pracę z Javą. Statystyki te są zapisywane na terminalu, ale muszę się go za pomocą kodu Java i zapisać go na własnym interfejsem, tuż po linii:Uzyskaj liczbę wejść i wyjść MapReduce w Javie

job_blocking.waitForCompletion(true); 

Odpowiedz

0

Po tej linii można uzyskać liczbę MAP_INPUT_RECORDS i REDUCE_OUTPUT_RECORDS (również MAP_OUTPUT_RECORDS), przez uzyskanie wartości tych liczników:

long map_input_records = job.getCounters() 
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","MAP_INPUT_RECORDS") 
    .getValue(); 
long map_output_records = job.getCounters() 
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","MAP_OUTPUT_RECORDS") 
    .getValue(); 
long reduce_input_records = job.getCounters() 
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","REDUCE_INPUT_RECORDS") 
    .getValue(); 
long reduce_output_records = job.getCounters() 
    .findCounter("org.apache.hadoop.mapreduce.Task$Counter","REDUCE_OUTPUT_RECORDS") 
    .getValue(); 

na czas potrzebny do uruchomienia zadania, ja nie wiem, czy istnieje inny sposób (łatwiej) niż ustawienie długiego zmiennej z obecny czas przed i po jego wykonaniu i uzyskaniu ich różnicy.