1. map变慢 --hashmap导致

eg

  1. select ...
  2. from (
  3. select ds
  4. ,unique_id
  5. ,pre_page
  6. from cbucdm.tmp_dwd_cn_log_app_ut_1
  7. where ds='${bizdate}'
  8. and pre_page is not null
  9. ) a
  10. left outer join
  11. (select t.*
  12. ,length(t.page_type_rule) rule_length
  13. from cbucdm.dim_cn_app_page_ut t
  14. where ds='${bizdate}'
  15. and is_enable = 'Y'
  16. ) b
  17. on 1=1
  18. where a.pre_page rlike b.page_type_rule ;

大数据 sql 变慢的N个理由

从日志看,长尾的Instance中处理的数据量比较小,单个Instance的处理时间达到了40分钟,在对表中字段的数据分布情况进行统计分析,发现pre_page这个字段的值很多只出现一次,而一些热门的字段出现的频率特别高,导致整体的数据分布很不均匀。因此,在Map端热点Key与小表做笛卡尔积,非常耗时,造成Map端长尾。针对这种情况,可以使用distribute by rand()来打乱数据分布,使数据尽可能的分布均匀。
修改后代码如下:

 

  1. lect ...
  2. from (
  3. select ds
  4. ,unique_id
  5. ,pre_page
  6. from cbucdm.tmp_dwd_cn_log_app_ut_1
  7. where ds='${bizdate}'
  8. and pre_page is not null
  9. distribute by rand()
  10. ) a
  11. left outer join
  12. (select t.*
  13. ,length(t.page_type_rule) rule_length
  14. from cbucdm.dim_cn_app_page_ut t
  15. where ds='${bizdate}'
  16. and is_enable = 'Y'
  17. ) b
  18. on 1=1
  19. where a.pre_page rlike b.page_type_rule ;

2.

 

相关文章:

  • 2021-11-18
  • 2021-08-26
  • 2021-08-23
  • 2021-09-11
  • 2021-11-29
  • 2021-11-17
  • 2023-02-18
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-24
  • 2021-04-01
  • 2021-07-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案