Advertisement

Hive>分组与计数与笛卡尔积

阅读量:

文章目录

  • Group By
  • Count(distinct)
  • 笛卡尔积

Group By

  • 通常情况下,在Map阶段同一Key的数据会自动分配到一个reducer上"当单个Key的数据量过大时会导致资源分配不均"。
    并非所有聚合操作都需要将处理过程完全转移到Reduce阶段完成;许多聚合操作可以在Map阶段进行局部汇总"然后将局部汇总的结果传递至Reduce阶段以获得最终结果"。

1)开启Map端聚合参数设置

复制代码
    (1)是否在Map端进行聚合,默认为True
    set hive.map.aggr = true;
    
    (2)在Map端进行聚合操作的条目数目
    set hive.groupby.mapaggr.checkinterval = 100000;
    
    (3)有数据倾斜的时候进行负载均衡(默认是false)
    set hive.groupby.skewindata = true;

当参数设置为true时,默认情况下查询计划将包含两个MR Job实例。在第一个MR_job运行过程中,map任务会产生随机分配给reduce任务的位置,并对这些位置执行汇总计算并返回中间结果。经过这种设计后的情况是相同的关键码可能会被分散至不同的_reduce节点。第二个mr_job

全部评论 (0)

还没有任何评论哟~