开发者社区> 问答> 正文

MaxComputer中DISTINCT长尾如何解决?

MaxComputer中DISTINCT长尾如何解决?

展开
收起
芯在这 2021-12-12 20:23:54 345 0
1 条回答
写回答
取消 提交回答
  • DISTINCT不会再shuffer进行一次聚合操作,会全部传入给reduce进行处理!相对没有group by效率高!

    采用去重统计的办法:

    --原始SQL,不考虑Uid为空 SELECT COUNT(uid) AS Pv

    , COUNT(DISTINCT uid) AS Uv

    FROM UserLog;

    一个方式是改写,把DISTINCT改成普通的COUNT:

    复制代码

    SELECT SUM(PV) AS Pv

    , COUNT(*) AS UV

    FROM (

    SELECT COUNT(*) AS Pv

    , uid

    FROM UserLog

    GROUP BY uid

    ) a;

    复制代码

    如果发现是特殊值引起的长尾(例如NULL特别多),则可以考虑先过滤再处理

    2021-12-12 20:25:09
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MaxCompute计算长尾问题优化 立即下载
阿里云流计算在阿里搜索与推荐业务的应用 立即下载
持续9年国际排名第一的宽表数据库概述 立即下载