使用MapReduce计算平均值的伪代码
嗨,我想用伪代码编写一个MapReduce算法来解决以下问题: 以下格式的给定输入记录:使用MapReduce计算平均值的伪代码,mapreduce,Mapreduce,嗨,我想用伪代码编写一个MapReduce算法来解决以下问题: 以下格式的给定输入记录: 地址、邮政编码、城市、房屋价值、, 请计算每个邮政编码的平均房屋价值。 如果您能帮助我,我将不胜感激。最简单的方法是使用Apache Pig,下面是一个求平均值的示例: inpt = load 'data.txt' as (address:chararray, zip:chararray, city:chararray, house_value:long); grp = group inpt by zip;
地址、邮政编码、城市、房屋价值、, 请计算每个邮政编码的平均房屋价值。
如果您能帮助我,我将不胜感激。最简单的方法是使用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;
对于伪映射Reduce代码,您需要一个映射器、组合器和一个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);
欢迎来到SO!到目前为止你试过什么?请分享一些[伪]代码