Hive调优方式

2023-05-16

文章目录

  • 一、建表注意事项
    • 1、分区、分桶
    • 2、一般使用外部表,避免数据误删
    • 3、选择适当的文件储存格式及压缩格式
    • 4、命名要规范
    • 5、数据分层,表分离,但是不要分的太散
  • 二、查询优化
    • 1、分区裁剪 where过滤,先过滤,后join
    • 2、分区分桶,合并小文件
    • 3、适当的子查询
    • 4、排序方式
  • 三、Hive数据倾斜优化
    • 数据倾斜出现原因
    • 表现
    • 数据倾斜解决
      • 具体解决
  • 四、作业优化

一、建表注意事项

1、分区、分桶

一般按照业务日期进行分区,每天的数据放在一个分区里,这样可以查询每一天的数据,避免了全局扫描,提高效率

2、一般使用外部表,避免数据误删

3、选择适当的文件储存格式及压缩格式

常用的格式有:①TextFile 默认的存储格式
②ORCFile:列式文件存储格式,具有很强的压缩

4、命名要规范

5、数据分层,表分离,但是不要分的太散

二、查询优化

1、分区裁剪 where过滤,先过滤,后join

2、分区分桶,合并小文件

3、适当的子查询

mapjoin(1.2以后自动默认启动mapjoin)
select /+mapjoin(b)/ a.xx,b.xxx from a left outer join b on a.id=b.id
左连的时候,大表在左边,小表在右边。

4、排序方式

order by 语句: 是全局排序
sort by 语句: 是单reduce排序
distribute by语句: 是分区字段;
cluster by语句:
可以确保类似的数据的分发到同一个reduce task中,并且保证数据有序防止所有的数据分发到同一个reduce上,导致整体的job时间延长
cluster by语句的等价语句:
distribute by Word sort by Word ASC

三、Hive数据倾斜优化

数据倾斜出现原因

1、key分布不均匀(实际上还是重复) 比如 group by 或者 distinct的时候
2、数据重复,join 笛卡尔积 数据膨胀

表现

任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。
单一reduce的记录数与平均记录数差异过大,通常可能达到3倍甚至更多。 最长时长远大于平均时长。

数据倾斜解决

看下key的分布
处理集中的key

具体解决

1,看下业务上,数据源头能否对数据进行过滤,比如 key为 null的,业务层面进行优化。
2,找到key重复的具体值,进行拆分,hash。异步求和。

四、作业优化

调整mapper和reducer的数量
太多map导致启动产生过多开销
按照输入数据量大小确定reducer数目
set mapred.reduce.tasks= 默认3
dfs -count /分区目录/*
hive.exec.reducers.max设置阻止资源过度消耗

参数调节
set hive.map.aggr = true (hive2默认开启)
Map 端部分聚合,相当于Combiner
hive.groupby.skewindata=true

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

Hive调优方式 的相关文章

随机推荐

  • 【论文学习】基于贝叶斯分类的大学生关注热点事件微博文本分类方法研究——殷复莲 张晓宇 冯晴

    自己梳理一遍论文 xff0c 作学习用 基本信息 作者 xff1a 殷复莲 张晓宇 冯晴 xff08 中国传媒大学信息工程学院 xff09 摘要 xff1a 针对互联网 xff0c 尤其是微博平台中大学生用户产生的海量的文本分类问题 xff
  • Linux 文件权限之umask

    目录 一 文件默认创建权限二 文件默认创建权限掩码三 文件权限的修改 本文主要讲解Linux中的文件默认创建权限相关的内容 xff0c 涉及到的内容有 xff1a 文件默认创建权限 文件默认创建权限掩码 文件访问权限的修改 文件访问者共三类
  • ucOS系统移植(hal库)

    学习嵌入式实时操作系统 xff08 RTOS xff09 以uc OS III为例 xff0c 将其移植到stm32F103上 xff0c 构建至少3个任务 xff08 task xff09 其中两个task分别以1s和3s周期对LED等进
  • Jmeter性能测试(16)--配置元件之计数器

    先说说利用jmeter生成数据的几种方法 xff1a 1 CSV Data Set Config 这个元件被用来在参数化生成数据时使用 xff0c 简单高效 xff0c 容易生成有序数 xff1b 只需要新建excel xff0c 然后通过
  • Python3 SMTP发送邮件

    SMTP xff08 Simple Mail Transfer Protocol xff09 即简单邮件传输协议 它是一组用于由源地址到目的地址传送邮件的规则 xff0c 由它来控制信件的中转方式 python的smtplib提供了一种很方
  • Tomcat方式启动CAS(附:java环境的切换)

    目录 一 安装java 1 8 注意 二 安装Tomcat 三 安装CAS 一 安装java 1 8 Java JDK在linux系统有两个版本 xff0c 一个开源版本Openjdk xff0c 还有一个oracle官方版本jdk xff
  • STM32—基于ZE08-CH2O模块检测甲醛含量精解

    ZE08 CH2O模块概述 管脚定义 xff1a ZE08 CH2O模块的数据及其使用方法 xff1a 这是我经常用的方法 xff1a 使用串口来接收数据 然后这个模块分为两个模式 xff1a 1 xff0c 主动上传模式 xff0c 2
  • 上位机 PC 和下位机 STM32 串口之间串口通讯的连接图如图 2 所示。USART1_TX 引脚为 PA9,USART1_RX 引脚为PA10 。编程实现如下功能:

    上位机 PC 和下位机 STM32 串口之间串口通讯的连接图如图 2 所示 USART1 TX 引脚为 PA 9 xff0c USART 1 RX 引脚为 PA10 编程实现如下功能 xff1a 当 上位机向下位机发送 1 时 xff0c
  • List集合

    List list集合在java util下使用时需要导包 List集合特点 xff1a 有序 xff1a 存和取的元素顺序一致有索引 xff1a 可以通过索引操作元素可重复 存储的元素可以重复 61 61 List特有 61 61 方法
  • docker服务更新脚本

    一 安装docker docker version systemctl status docker 1 cd home qcpublish qctool dockerInstall 2 yum localinstall y rpm 3 sy
  • 蓝桥杯嵌入式组环境配置(keil mdk+sdk+STM32cubemx)

    1 keil mdk下载 官网也可以下载 地址 MDK ARM Version 5 38a Evaluation Software Request keil com 没梯子速度太慢了 我已经把安装包放在了云盘里链接 xff1a 链接 xff
  • UDP通信代码

    1 客户端代码 创建一个套接字 设置服务器地址 使用sendto向服务器端或接收端发送数据 使用recv接受数据 include lt sys un h gt include lt sys types h gt include lt sys
  • 手把手教CMake编译Qt5工程

    一 新建CMakeLists txt 可以在工程目录下新建一个名为CMakeLists txt文件 xff0c 亦或是 xff0c 在Qtcreator中 xff0c 右键项目 xff0c 添加新文件 xff0c 选择General中的Em
  • Jmeter性能测试(17)--目录结构

    首先得了解一下这些东西 xff0c 以后才能快速的找到某些配置文件进行修改 xff08 举个例子 xff0c 改配置只是其中之一 xff09 一 bin目录 examples 目录中有CSV样例 jmeter bat windows的启动文
  • 冒泡排序和选择排序的区别

    一 区别 1 冒泡排序是比较相邻位置的两个数 xff0c 而选择排序是按顺序比较 xff0c 找最大值或者最小值 xff1b 2 冒泡排序每一轮比较后 xff0c 位置不对都需要换位置 xff0c 选择排序每一轮比较都只需要换一次位置 xf
  • 使用Navicat连接mysql出现的报错:[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and co

    报错如下 Err 1055 Expression 1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 39 information
  • hadoop三大组件

    1 介绍hadoop的组件 hadoop有三个主要的核心组件 xff1a HDFS xff08 分布式文件存储 xff09 MAPREDUCE xff08 分布式的计算 xff09 YARN xff08 资源调度 xff09 xff0c 现
  • phoenix安装及使用(重点二级索引)

    文章目录 一 phoenix搭建1 关闭HBase集群 xff0c 在master中执行2 上传解压配置环境变量3 将phoenix 4 15 0 HBase 1 4 server jar复制到所有节点的hbase lib目录下4 启动hb
  • Hive数仓分层架构

    文章目录 一 为什么要进行数据分层 xff1f 数据分层的好处 xff1f 1 原因2 好处 二 hive数仓分为哪几层 xff1f 1 ODS层 数据运营层 xff08 贴源层 xff09 作用我们需要做的是 xff1f 2 DW层 xf
  • Hive调优方式

    文章目录 一 建表注意事项1 分区 分桶2 一般使用外部表 xff0c 避免数据误删3 选择适当的文件储存格式及压缩格式4 命名要规范5 数据分层 xff0c 表分离 xff0c 但是不要分的太散 二 查询优化1 分区裁剪 where过滤