美文网首页
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