2013-10-21 6 views

답변

0

가장 쉬운 아파치 돼지를 사용하는 것, 여기에 평균 찾는 예입니다

inpt = load 'data.txt' as (address:chararray, zip:chararray, city:chararray, house_value:long); 
grp = group inpt by zip; 
average = foreach grp generate FLATTEN(group) as (zip), AVG(inpt.house_value) as average_price; 
dump average; 

하는 의사지도 코드를 당신이 할 줄 경우를 MAPPER, COMBINER 및 REDUCER가 하나만 필요합니다.

MAPPER(record): 
    zip_code_key = record['zip']; 
    value = {1, record['house_value']}; 
    emit(zip_code_key, value); 

COMBINER(zip_code_key, value_list): 
    record_num = 0; 
    value_sum = 0; 
    foreach (value : value_list) { 
     record_num += value[0]; 
     value_sum += value[1]; 
    } 
    value_out = {record_num, value_sum}; 
    emit(zip_code_key, value_out); 

REDUCER(zip_code_key, value_list): 
    record_num = 0; 
    value_sum = 0; 
    foreach (value : value_list) { 
     record_num += value[0]; 
     value_sum += value[1]; 
    } 
    avg = value_sum/record_num; 
    emit(zip_code_key, avg); 
관련 문제