当前位置: 首页 > news >正文

Hive查询中的优化

目录

  • 前言
  • 优化策略
    • 推荐使用group by代替distinct去重

前言

优化策略

推荐使用group by代替distinct去重

参考:

  • hive中groupby和distinct区别以及性能比较 - cnblogs
  • 数据倾斜之count(distinct) - cnblogs

重要结论: 两者都会在map阶段count,但reduce阶段,distinct只有一个, group by 可以有多个进行并行聚合,所以group by会快。

distinct 只生成一个reducer任务,所有的id都聚集到同一个reducer任务进行去重然后在聚合,非常容易造成数据倾斜。distinct耗费内存,可能产生OOM,但效率高。
group by 将数据分组到了多个reducer上进行处理,所以较快。groupby排序消耗时间更多,在时间复杂度允许下,空间复杂度更低。

例子:
在一个具有5,563,985,064个记录的hive表中,对其中的两个字段进行查询,耗时如下:

-- 耗时00:11:17
select col1,col2
from 库名xxx.表名xxx
where ds=20230224
group by col1,col2;-- 耗时00:25:07
select distinct col1,col2
from 库名xxx.表名xxx where ds=20230224;

【其他优化策略待更新】

http://www.lryc.cn/news/21802.html

相关文章:

  • 【开发规范】go项目开发中的[流程,git,代码,目录,微服务仓库管理,静态检查]
  • 数组初始化方式与decimal.InvalidOperation
  • 【Opencv-python】之入门安装
  • MySQL进阶(二)
  • 热爱所有热爱
  • Redis学习之数据删除与淘汰策略(七)
  • HashMap 面试专题
  • 域组策略自动更新实验报告
  • Java自定义生成二维码(兼容你所有的需求)
  • Spring事务的隔离级别
  • JVM系统优化实践(4):以支付系统为例
  • 16- TensorFlow实现线性回归和逻辑回归 (TensorFlow系列) (深度学习)
  • 无自动化测试系统设计方法论
  • 架构初探-学习笔记
  • 在成都想转行IT,选择什么专业比较好?
  • 【Spark分布式内存计算框架——Spark Streaming】4.入门案例(下)Streaming 工作原理
  • 2、算法先导---思维能力与工具
  • WordPress 函数:add_theme_support() 开启主题自定义功能(全面)
  • Winform控件开发(16)——Timer(史上最全)
  • 游戏高度可配置化:通用数据引擎(data-e)及其在模块化游戏开发中的应用构想图解
  • CountDownLatch与CyclicBarrier原理剖析
  • NLP中的对话机器人——预训练基准模型
  • C语言学习及复习笔记-【14】C文件读写
  • 模拟退火算法优化灰色
  • Pandas怎么添加数据列删除列
  • C++类和对象:构造函数和析构函数
  • 【Stata】从入门到精通.零基础小白必学的教程,一学就fei
  • 【RuoYi优化】调整JVM启动内存
  • [架构模型]MVC模型详细介绍,并应用到unity中
  • ?? JavaScript 双问号(空值合并运算符)