美文网首页
Hive count(DISTINCT id )

Hive count(DISTINCT id )

作者: 团团饱饱 | 来源:发表于2021-05-12 17:44 被阅读0次

SELECT count(DISTINCT orderid) FROM test.subOrderAllDetail

map 阶段的key 会全部汇总在一个reduce 上,导致一个reduce 处理所有数据。reduce 个数只有一个。不管你怎么设置参数:set mapred.reduce.tasks=100,实际执行任务的reduce 只有一个。

优化:
SELECT count(orderid)
FROM
(SELECT DISTINCT orderid
FROM test.subOrderAllDetail)tmp;

map 阶段对key 进行去重,在不同的task 上去重。之后发送到不同的reduce,reduce 个数不一定只有一个。可以通过set mapred.reduce.tasks=n 设置。

从而达到并行执行。

相关文章

网友评论

      本文标题:Hive count(DISTINCT id )

      本文链接:https://www.haomeiwen.com/subject/bfoadltx.html