25
!"#$!%
i I0'/-5*;/+-'.0)/()/5/.0*(5,/)-340'GQ/*07)3/3;-('/1'(-): ./5):/
1'(-):./01/1'(-):.
§ I0'/85+P//key1 (./5/+-'.0)Q/value (./3;-/,(.3/01/3;-('/1'(-):.
§ I0'/9-:7* -P//key2 (./cccQ/values (. /5/,(.3/01/ccc
607)3/1'(-):./d/1'(-):./01/1'(-):.
f1(String key1, String value):
for each friend1 in value:
EmitIntermediate(friend1, key1)
for each friend2 in value:
EmitIntermediate(friend1,
friend2);
f2(String key2, Iterator values):
distinct_values = {}
for each v in values:
if not v in distinct_values:
distinct_values.insert(v)
Emit(key2, len(distinct_values))
MapReduce: (person, friends)* à (person, count of f + fof)*