hadoop学习mapreduce:是reducer还是mapper

waxmsbnn  于 2021-05-31  发布在  Hadoop
关注(0)|答案(1)|浏览(477)

在mapreduce作业中,包括 select count(*) from products where id = 2 ,在哪里 count(*) 操作发生时,是在Map器中还是在缩小器中?

kcwpcxri

kcwpcxri1#

它可以是mapper和reducer,也可以是reducer-only聚合。
启用Map端聚合时:

hive.map.aggr=true;

数据将在每个Map器上使用哈希表进行预聚合(在拆分处理的范围内)。reducer将对从mapper收到的部分结果进行最终聚合。
Map器将输出这些对 (#{token}, #{token_count}) . hadoop框架再次对这些对进行排序,并对这些值求和,从而生成每个令牌的总计数。在这种情况下,Map器将在每次刷新Map时为每个令牌输出一行,而不是为每个令牌的每次出现输出一行。折衷的办法是,它们需要在内存中保留所有令牌的Map。
如果Map侧聚合已关闭: hive.map.aggr=false ,Map器会过滤行并将它们发送到reducer,reducer会进行聚合,这会导致网络io过高。
阅读有关配置单元中Map端聚合的更多详细信息。另见相关https://stackoverflow.com/a/61772631/2700344

相关问题