hive.map.aggr=true;在map中会做部分聚集操作,效率更高但需要更多的内存。

hive.groupby.skewindata=true:数据倾斜时负载均衡,当选项设定为true,生成的查询计划会有两个MRJob。第一个MRJob 中,

Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的GroupBy Key

有可能被分发到不同的Reduce中,从而达到负载均衡的目的;第二个MRJob再根据预处理的数据结果按照GroupBy Key分布到

Reduce中(这个过程可以保证相同的GroupBy Key被分布到同一个Reduce中),最后完成最终的聚合操作。

但是两者组合使用,计算pv时候会出现错误,现象如下四个sql

前3个看问题,最后一个改进

set hive.groupby.skewindata=false ;

set hive.map.aggr = true;

select dt,’整体’ as os,count(1) ,count(distinct device_id)

from ods_cre_news_click

where   ‘20180401’<=dt and dt<=’20180418′  and pagetype=’tianyi_nvideo’ and channel=’news_video’ and event_method !=’Android_Lite’

group by dt

20180401        整体    394384  88374

20180402        整体    350275  83083

20180403        整体    362113  84762

20180410        整体    355632  84843

20180404        整体    362981  86480

20180411        整体    371531  95118

20180405        整体    407410  92178

20180412        整体    419627  108835

20180406        整体    386203  88369

20180413        整体    456934  114080

20180407        整体    381992  87484

20180414        整体    480010  115757

20180408        整体    366030  86030

20180415        整体    459180  111333

20180409        整体    348939  82524

20180416        整体    418914  105665

20180417        整体    430969  105115

20180418        整体    426462  102444

set hive.groupby.skewindata=true ;

set hive.map.aggr = false;

select dt,’整体’ as os,count(1) ,count(distinct device_id)

from ods_cre_news_click

where   ‘20180401’<=dt and dt<=’20180418′  and pagetype=’tianyi_nvideo’ and channel=’news_video’ and event_method !=’Android_Lite’

group by dt

20180401        整体    394384  88374

20180402        整体    350275  83083

20180403        整体    362113  84762

20180410        整体    355632  84843

20180404        整体    362981  86480

20180411        整体    371531  95118

20180405        整体    407410  92178

20180412        整体    419627  108835

20180406        整体    386203  88369

20180413        整体    456934  114080

20180407        整体    381992  87484

20180414        整体    480010  115757

20180408        整体    366030  86030

20180415        整体    459180  111333

20180409        整体    348939  82524

20180416        整体    418914  105665

20180417        整体    430969  105115

20180418        整体    426462  102444

set hive.groupby.skewindata=true ;

set hive.map.aggr = true;

select dt,’整体’ as os,count(1) ,count(distinct device_id)

from ods_cre_news_click

where   ‘20180401’<=dt and dt<=’20180418′  and pagetype=’tianyi_nvideo’ and channel=’news_video’ and event_method !=’Android_Lite’

group by dt

20180401        整体    267833  88374

20180402        整体    246562  83083

20180403        整体    246095  84762

20180410        整体    242038  84843

20180404        整体    253287  86480

20180411        整体    265535  95118

20180405        整体    279676  92178

20180412        整体    298332  108835

20180406        整体    273046  88369

20180413        整体    325518  114080

20180407        整体    257079  87484

20180414        整体    324205  115757

20180408        整体    253223  86030

20180415        整体    319272  111333

20180409        整体    248462  82524

20180416        整体    281923  105665

20180417        整体    289144  105115

20180418        整体    280593  102444

四:改进,把count改为sum

set hive.groupby.skewindata=true ;

set hive.map.aggr = true;

select dt,’整体’ as os,sum(1) ,count(distinct device_id)

from ods_cre_news_click

where   ‘20180401’<=dt and dt<=’20180418′  and pagetype=’tianyi_nvideo’ and channel=’news_video’ and event_method !=’Android_Lite’

group by dt

20180401        整体    394384  88374

20180402        整体    350275  83083

20180403        整体    362113  84762

20180410        整体    355632  84843

20180404        整体    362981  86480

20180411        整体    371531  95118

20180405        整体    407410  92178

20180412        整体    419627  108835

20180406        整体    386203  88369

20180413        整体    456934  114080

20180407        整体    381992  87484

20180414        整体    480010  115757

20180408        整体    366030  86030

20180415        整体    459180  111333

20180409        整体    348939  82524

20180416        整体    418914  105665

20180417        整体    430969  105115

20180418        整体    426462  102444

hive中groupby优化_hivesql : hive.groupby.skewindata 和hive.map.aggr 组合的坑相关推荐

  1. exists hive中如何使用_07045.16.2如何使用Hive合并小文件

    问题背景 目前集群存于一个非常不健康的状态,主要问题是小文件太多,单个DataNode的block数量阈值是500,000,而现在单个DataNode的block为2,631,218,约为阈值的5倍, ...

  2. hive中字段长度函数_技术分享:hive常用内部函数

    原标题:技术分享:hive常用内部函数 hive常用内部函数 hive是一种典型的数据仓库分析工具,常用语编写hql语句进行指标分析.在编写hql的过程中无疑会用到很多的函数,哪本章来编写一些常见的函 ...

  3. hive查看表中列的信息命令_快速了解hive

    作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...

  4. 3.2-3.3 Hive中常见的数据压缩

    一.数据压缩 1. 数据压缩数据量小*本地磁盘,IO*减少网络IOHadoop作业通常是IO绑定的; 压缩减少了跨网络传输的数据的大小; 通过简单地启用压缩,可以提高总体作业性能; 要压缩的数据必须支 ...

  5. hive 中某个字段等于0_快速了解hive

    作者丨HappyMint 文章选摘:大数据与人工智能 这是作者的第7篇文章 本文主要针对从事大数据分析和架构相关工作,需要与hive打交道但目前对hive还没有进行深层次了解的小伙伴,希望本文会让你对 ...

  6. [一起学Hive]之十二-Hive SQL的优化

    十一.Hive SQL的优化 本章只是从HQL层面介绍一下,日常开发HQL中需要注意的一些优化点,不涉及Hadoop层面的参数.配置等优化. 其中大部分是我之前发过的博客文章,这里整理了下. 11.1 ...

  7. hive中的分区表与视图

    Hive主要由用户接口模块.驱动模型以及元数据存储模块3个模块组成: 用户接口模块   用户接口模块包括CLI.Hive网页接口(Hive Web Interface,HWI).JDBC.ODBC.T ...

  8. Hive中的常用函数

    一.Hive中collect_list和collect_set的区别 二.Hive中四种排序(order by.sort by.distribute by.cluster by) 2.1 order ...

  9. hive中的事物操作

    背景 hive中默认是不支持事物的,Hive的常见也一般都是一次写入,频繁读取.加入事物之后,支持update.insert.delete操作 保存的文件格式必须为crc格式file 需要修改配置文件 ...

  10. hive中使用iceberg表格式时锁表总结

    1. 原因 写入iceberg表时,会在hive_locks表中插入一条记录,表示该表正在被写入(hive中的独占锁) 当数据插入完成后,会自动删除该条记录. 2. 出现场景 (1)在同时往同一个ic ...

最新文章

  1. MySQL主主配置说明
  2. 自回归模型PixelCNN 的盲点限制以及如何修复
  3. 敏捷开发:软件与文档
  4. 全球及中国增强现实产业战略布局及运营前景决策分析报告2021-2027年
  5. 【转】CLASS ALV(CL_GUI_ALV_GRID) 添加保存布局(Save Layout)的按钮
  6. 爬虫2-web请求与http协议
  7. 程序员的职业规划_大学毕业进入职场,程序员如何进行合理的互联网职业规划?...
  8. PHP连接mysql8.0出错“SQLSTATE[HY000] [2054] The server requested authentication method unknow........
  9. c#中一般处理程序中使用session
  10. python爬取book118中的书籍
  11. 下载c语言软件在哪里,下载c语言编程软件-c语言编程软件去哪里下?c语言编程软件去哪 – 手机爱问...
  12. linux环境下,geopandas 安装报错,显示Proj executable not found. Please set PROJ_DIR variable
  13. 2019牛客多校赛第8场 D Distance 三维树状数组
  14. 【无人驾驶 | 国内篇】主要玩家介绍
  15. android html5 加密,android studio MD5加密 示例代码
  16. JavaScript脚本语言的使用
  17. k8s之ConfigMap详细理解及使用
  18. 一个Fluent动网格问题及解决方法的记录
  19. 高速/低速离心机样品该如何配平?这两点很重要!
  20. 企业搭建小型直播间、中型直播间、大型直播间的介绍

热门文章

  1. Hadoop简介(1)
  2. SQL SERVER获取数据库文件信息
  3. CKeditor与CKfinder的简单配置
  4. 从企业角度看:网站设计的关键是了解与沟通
  5. 单表查询之选择查询 + 多表查询(2020.3.20 )
  6. mybatis中的动态Sql略解,基础理解,为什么要使用动态sql,动态sql相比于传统sql的区别;仅作笔记,如有错误请及时指出
  7. 单体内置对象_第五章 单体内置对象
  8. 怎么定义int_「C语言更新」C语言中如何来定义一个指针,并且对其进行初始化...
  9. arcgis js平滑线工具_Arcgis中文字体、平滑线插件使用说明
  10. c++频繁读取数据会丢失_AMADA数控冲床255参数丢失故障