用户画像

最新书摘:
  • sunshine
    2021-09-15
    方案二:引入随机数数据按照类型 group by时,会将相同的太ey所需的数据拉取到一个节点进行聚合而当某组数据量过大时,会出现其他组已经计算完成而当前任务未完成的情。可以考虑加人随机数,将原来的一组key强制拆分为多组进行聚合。下面通过一个案例介绍。现需要统计用户的订单量,执行如下代码 select tl user id from(select user-l from dim。user_info_fact#用户维度表 where data date ="20190101 and user status id=l join (select user-id, count(*)as order_ num from dwdw order_fact#订单表 where site id in (600, 900) and order-status_id in(1, 2, 3) on t1。user id=t2user-id用户维度表中有2000条数据,订单表有10亿条数据,任务在未优化前执行了1个小时也没有跑出结果,判断可能是出现了数据倾斜。订单表中某些key值数量较多,在 group by的过程中拉取到一个task上执行时,会出现其他task执行完毕,等待该task执行的情况。这里可以将原本相同的key通过添加随机前缀的方式变成多个key,这样将原本被个task处理的key分散到多个task上先做一次聚合,然后去掉前缀再进行一次聚合得到最终结果。过程如图5-4所示。