12.大数据之Hive性能优化

2023-10-27

hive性能调优

1HADOOP计算框架特性

· 数据量大不是问题,数据倾斜是个问题。

· jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几个jobs,耗时很长。原因是map reduce作业初始化的时间是比较长的。

· sum,count,max,min等UDAF,不怕数据倾斜问题,hadoop在map端的汇总合并优化,使数据倾斜不成问题。

· count(distinct ),在数据量大的情况下,效率较低,如果是多count(distinct )效率更低,因为count(distinct)是按group by 字段分组,按distinct字段排序,一般这种分布方式是很倾斜的,比如男uv,女uv,淘宝一天30亿的pv,如果按性别分组,分配2个reduce,每个reduce处理15亿数据。


2优化的常用手段 

· 好的模型设计事半功倍。

· 解决数据倾斜问题。

· 减少job数。

· 设置合理的map reducetask数,能有效提升性能。(比如,10w+级别的计算,用160reduce,那是相当的浪费,1个足够)

· 了解数据分布,自己动手解决数据倾斜问题是个不错的选择。set hive.groupby.skewindata=true;这是通用的算法优化,但算法优化有时不能适应特定业务背景,开发人员了解业务,了解数据,可以通过业务逻辑精确有效的解决数据倾斜问题。

· 数据量较大的情况下,慎用count(distinct)count(distinct)容易产生倾斜问题。

· 对小文件进行合并,是行至有效的提高调度效率的方法,假如所有的作业设置合理的文件数,对云梯的整体调度效率也会产生积极的正向影响。

· 优化时把握整体,单个作业最优不如整体最优。

    

3:全排序

Hive的排序关键字是SORT BY,它有意区别于传统数据库的ORDER BY也是为了强调两者的区别–SORT BY只能在单机范围内排序。

   order by  以及 sort by  distribute by   cluster by

   order by 语句  和数据库中的一样 会对结果集执行一个全局排序 但是  如果是全局排序的话  那么所有的数据 必须通过

   一个reduce进行处理  就是说 用Order by 必须保证只有一个reduce  任何情况下  都不会出现多个reduce  那么 程序

   运行的性能就会下降  非常容易出现数据倾斜的问题


   体会一下:

     set  mapred.reduce.tasks = 3;

     select  count(*) from emp group by deptno; 用了3reduce

     select ename,sal from emp order by sal desc;

     

     总结一下  什么情况下 我们不管如何设置reduce的个数  但他总是1  

     1. order by

     2. 没有group by 的汇总 比如 selct max(sal) from emp; 比如 select count(1) from emp;group by的汇总

     有几个group by的列 就要有几个reduce

     3.笛卡尔积   

     因为我们用order by只有一个reduce 非常容易出现数据倾斜 所以 如果我们添加了这个属性

     set hive.mapred.mode = strict;

     如果我们直接做排序 他不会让我们通过  select  * from emp order by sal desc;

     必须要加 Limit  select * from emp order by sal desc limit

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

12.大数据之Hive性能优化 的相关文章

  • 电商平台怎么搭建

    越来越多商家致力于搭建并运营自己的私域电商平台 大家都清楚了解拥有自己电商平台的好处 有利于品牌的塑造与提升 提高品牌曝光度和认知度 提高客户黏性 降低渠道成本 乔拓云平台模板式搭建电商平台 方法简单实用 适合电脑零基础的朋友自己搭建 通过
  • rv1126如何切换720p和1080p

    切换720p和1080p可以使用modetest 但是需要将这两种模式都添加到connector中去 添加一个新的mode到connector中去 其实内核中已经有相关接口了 需要做一些小改动 1 不采用设备树的方式去配置 将720p和10
  • 聚水潭无需API开发连接伙伴云,实现新增订单信息自动同步到表单汇总

    聚水潭用户使用场景 电商行业通常使用聚水潭作为企业的ERP系统 然而 每当聚水潭产生新订单时 企业人员常常需要将订单信息手动复制并录入到伙伴云存储 汇总 包括订单单号 状态 金额等20多项信息 这种人工手动复制和录入的方式容易导致订单数据出
  • C++知识框架梳理

    封装 继承 多态被称为面向对象的三大法宝 一 封装 1 类 a 如何创建自己的类 形式如下 class student 类名 student string name 类里面两个内容 年龄名字 叫做类的成员数据 也叫作属性 int age 早

随机推荐

  • Android码农是如何进入腾讯的,Flutter全方位深入探索

    正式加入字节跳动 分享一点面试小经验 今天正式入职了字节跳动 工号超吉利 尾数是3个6 然后办公环境也很好 这边一栋楼都是办公区域 公司内部配备各种小零食 饮料 还有免费的咖啡 15楼还有健身房 而且公司包三餐来着 下午三点半左右还会有阿姨
  • STM32关于定时器输出多路PWM波的持续跟进

    简介 这里简单用stm32产生多路PWM 1 32的通用定时器3可以产生4路PWM输出 同频率 不同占空比 2 一个定时器产生的PWM频率由定时器输入频率决定 时钟树决定通用定时器时钟来自APB1 且如果APB1的分频为1的话 定时器时钟为
  • 抽象类 接口

    1 抽象类 public abstract class AbstractClass 里面至少有一个抽象方法 public int t 普通数据成员 public abstract void method1 抽象方法 抽象类的子类在类中必须实
  • 功率时延谱(PDP)与三种选择性衰落

    衰落与弥散是无线信道的基本特性 电磁波经过无线信道传输后会使原本的信号在时域 频域 空域 角度 上产生弥散现象 导致波形在时间 频谱 空间上产生交叠 引起信号的失真 多径效应在时域上引起信号时延扩展 在频域上定义了相关带宽指标 当信号带宽大
  • k8s调度 原理_深入剖析k8s之默认调度器调度策略解析

    本篇专注在调度过程中 Predicates 和 Priorities 这两个调度策略主要发生作用的阶段 Predicates 首先 我们一起看看 Predicates Predicates 在调度过程中的作用 可以理解为 Filter 即
  • 如何使用nfsiostat来分析nfs存储性能问题

    nfsiostat介绍 Sysstat家族包括一个名叫nfsiostat的实用程序 它和iostat有诸多类似之处 它允许你监控NFS文件系统上的读写情况 其用法也和iostat类似 最基本的命令用法是跟上几个参数和两个数字 这两个数字分别
  • vue父子组件传值,父组件内容更新子组件内容不实时更新

    背景 vue父子组件传值不能实时更新问题 父组件将值传给了子组件 但子组件显示的值还是原来的初始值 并没有实时更新 总结了以下三种情况及解决方案 1 子组件没有正确监听父组件传递的值 在子组件中 确保正确地声明了props 并且监听了父组件
  • CVPR2023论文汇总

    点击下方卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 CVPR2023中稿paper已经陆续放出来了 自动驾驶之心团队为大家整理了计算机视觉 BEV 分割 Occpuancy v
  • Vue的插槽与作用域插槽详解

    在Vue中 插槽 Slot 是一个非常强大且灵活的特性 用于在父组件中定义子组件的内容 Vue提供了两种主要类型的插槽 默认插槽 Slot 和作用域插槽 Scoped Slot 本篇博文将深入介绍这两种插槽类型 从基础到进阶 默认插槽 Sl
  • 打开一个php网页出现2个ip,php根据ip地址查地区

    自己以前做过一个程序 根据discuz里面的ip查询改的 ip地址所属地区计算 修改自 discuz 使用dicuz tinyipdata数据文件 将一些英文提示修改为汉字 is simple true的话显示到市 false显示到网通电信
  • maven项目中添加MySql依赖失败(以及maven的安装到maven项目的使用过程)

    maven项目中添加MySql依赖失败 以及maven的安装到maven项目的使用过程 1 maven项目中添加MySql依赖失败 报错信息 Dependency mysql mysql connector java not found 解
  • Cadence Allegro PCB设计88问解析(三十) 之 Allegro中 PCB的3D模型导出

    一个学习信号完整性仿真的layout工程师 在进行PCB投板之前 往往需要将PCB的结构发给结构的同事确认 一般会导出DXF和EMN文件 或者导出3D模型 3D模型包含版型 器件的实际3D模型等等 可以比较直观的看到PCB板上的器件情况 下
  • 【git 错误】git 使用中的问题汇总 不定期更新 git报错 Please enter a commit message to explain

    1 Please enter a commit message to explain why this merge is necessary 解决办法 1 按键盘字母 i 进入insert模式 2 修改最上面那行黄色合并信息 可以不修改 3
  • ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26‘ not foun Python GDAL

    前言 更新完pytorch1 9 0之后 突然GDAL包不能用了 但是代码调试的时候是正常的 本文给出具体的解决过程 提示一下 其实这种因为软件更新导致某个动态库不能通用的情况 一般的解决方法 就是在本机上查找一下有没有别的地方有 这样的解
  • ADAS先进驾驶辅助系统(Advanced Driver Assistant System)

    先进驾驶辅助系统 Advanced Driver AssistantSystem 简称ADAS 是利用安装于车上的各式各样的传感器 可侦测光 热 压力等变数 在第一时间收集车内外的环境数据 进行静 动态物体的辨识 侦测与追踪等技术上的处理
  • YOLOv7——目标检测数据集划分篇

    法一 1 准备VOC数据集 将所有数据集图片放入JPEGImages文件夹中 所有的图片对应的xml文件放入Annotations中 ImageSets文件夹中创建Main文件夹 暂时Main文件夹为空 文件夹结构 datasets Ann
  • 数据标准详细概述-2022

    1 数据标准的是什么 在实际的工作生产中 我们一般会参照国家标准 地方标准 行业标准等来进行具体的活动 来确保我们生成过程符合监管要求 便于上下游协同等 于是我们会见到如下的标准指导文件 同样 数据标准也会以文件的形式存在 在除了国标 行标
  • qq人脸更换_QQ安全中心现在怎么替换人脸设置或删除人脸?

    以下内容收集自网络 题主可以参考一下 1 我们从手机中打开QQ安全中心 如果还不是最新版本的话 请先升级到最新版本 2 在QQ安全中心首页 点击最下方的 工具 按钮 3 在 工具 页面 点击打开 实验室 这个图标 4 在打开的界面 点击打开
  • 四阶魔方玩法总结V1.0

    四阶魔方玩法总结V1 0 1 引言 今写此文 我主要是为了方便自己再次玩其魔方的时候 可以快速的想起 避免又从头学起 毕竟自己学会的 理解的 写出来的东西 再次玩魔方的时候 仅仅是回顾和追忆的过程 不存在学习 理解和消化的过程 避免再次浪费
  • 12.大数据之Hive性能优化

    hive性能调优 1 HADOOP计算框架特性 数据量大不是问题 数据倾斜是个问题 jobs数比较多的作业运行效率相对比较低 比如即使有几百行的表 如果多次关联多次汇总 产生十几个jobs 耗时很长 原因是map reduce作业初始化的时