使用MapReduce计算平均值的伪代码



嗨,我想用伪代码编写一个MapReduce算法来解决以下问题:给定以下格式的输入记录:
地址, 邮政编码, 城市, house_value,请计算每个邮政编码的平均房屋价值。如果您能帮助我解决这个问题,我将不胜感激。

最简单的方法是使用Apache Pig,下面是一个查找平均值的示例:

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;

对于伪映射化简代码,您需要一个映射器,组合器和一个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);

相关内容

  • 没有找到相关文章

最新更新