在某些条件下,我们希望 mapper 完成所有工作并输出到 HDFS,我们不希望将数据传输到 reducer(将使用额外的带宽,如果有错误请纠正我)。
一个伪代码是:
def mapper(k,v_list):
for v in v_list:
if criteria:
write to HDFS
else:
emit
我发现这很难,因为我们唯一可以玩的是 OutputCollector。我想到的一件事是扩展 OutputCollector,覆盖 OutputCollector.collect 并做这些事情。有没有更好的方法?