学习Hive(五)Hive 优化

Unrecognized Hadoop major version number: 3.0.0-cdh6.3.2 spark任务提交cdh集群yarn模式执行报错: Exception in thread "main" java.lang.ExceptionInInitializerError at org.apache.hadoop.hive.conf.HiveConf.<clinit>(HiveConf.java:105) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.j... 阅读详情

Hive优化核心思想是把Hive Sql当做MapReduce去优化。

1、select查询本表、where进队本表字段做过滤时不会转为MapReduce执行。

原因:Hive抓取策略配置。Set hive.fetch.task.conversion=none/more;

默认配置为more.所以对部分查询不会转为MapReduce执行。

2、Hive sql转为MapReduce的过程:1)抽象语法树。2)查询块。3)逻辑查询计划。4)物理查询计划。5)优化执行

可以使用explain (在加extends 会更详细的展示) select count(*) from psn;查看sql的执行计划。分析计划效率。

3、Hive sql之前介绍的都是运行在集群上。在本机测试时可以设置在本地。

设置:set hive.exec.mode.local.auto=true;设置完成hive sql就会运行在本地上。而不通过yarn集群。所以效率比较高。

注意:hive.exec.mode.local.auto.inputbytes.max默认值为128M。它表示文件加载的最大值。若大于该配置依然会在集群运行。

 

4、开启并行计算。

设置下面参数,开启并行计算:

set hive.exec.parallel=true

比如 select t1.ct,t2.ct1  from (select count(name) ct from psn) t1,(select count(id) ct1 from psn)t2;

正常情况下会分成多个job依次执行。但是如果第一个select count 和第二个同时执行,就会提高了效率。

注意这个参数:hive.exec.parallel.thread.number;

意思为一个sql中允许并行执行的job个数的最大值。默认为8.

5、严格模式。

开启严格模式:set hive.mapred.mode=strict;  默认为nonstrict

此模式对于查询的限制:1.对于分区表,必须where对于分区字段的过滤。2、order by 必须包含limit做输出限制。3、限制执行笛卡尔积查询。

通过限制提升查询效率。

6、Hive 排序。

Order by 是对全部查询结果的全排序。只允许有一个reduce处理,所以效率非常低(尤其是数据量大时慎用)。

Sort by :是对于单个reduce内的数据排序。

Distribut by  :reduce间的排序(分区排序)。常和Sort by一起使用达到分区有序和区间内有序。

distribute by column sort by column asc|desc

cluster by 相当于Distribut by +Sort by  但是cluster by 不能配合desc asc指定排序规则。

7、Hive jion

思想: jion计算时将小表放在左边。希望将小表加载到内存,大表逐行取出与其对比。这样的方式会比较节约内存。

Map Join:在Map端完成Jion.

两种实现方式:

【1】、手动添加MapJoin标记。/*+ */ 里定义的表识别为小表

select /*+ mapjoin(p)*/ p.id,p1.id from psn p join psn24 p1 on p.id=p1.id;

【2】、开启自动的MapJoin,程序根据表的大小自动识别为哪个是小表.设置以下配置启动:set hive.auto.convert.join = true;

其他相关参数:

注意:第二个参数的意思为,当既写了/*+ */标记又开启的自动识别时。标记无效。不配置这个的话,如果标记与自动识别都配置了,那么标记生效。

8、Hive Jion 尽可能使用相同的连接建(会转化为一个MapReduce作业)。

9、大表Jion大表:

  【1】空key过滤。有时Join超时是因为某些key对应的数据太多。相同key对应的数据都是在相同的reducer中运算的。从而内存不够。此时,分析这些key,很多情况key对应的是异常数据,我们可以再sql语句中进行过滤。

 【2】空key转换。当key为空时,有时会对应很多数据。这些数据也要join到结果中。这时可以使表中的空key赋予随机数,使数据均匀分布在reducer中。

10、map-side聚合。

通过设置开启map-site聚合:set hive.map.aggr=true;

原理:就是map之后shuffle之前的combiner阶段。先对数据做一部分聚合。减少文件,减少shuffle阶段的IO,进而提高性能。

11、合并小文件。(注意:这里合并小文件原理没理解清楚。)

12、控制map及reduce数量:

13、Hive JVM重用。

场景:小文件过多,task很多

原理:提前按配置申请一定资源(槽),是多个task同时进行。

配置:set mapred.job.reuse.jvm.num.tasks=n;  n为插槽个数

缺点:设置开启后task会一直占用资源,不论task是否运行。直到整个job(全部task)全部完成,才会释放所有的插槽资源。

hive优化总结 优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜。 理解hadoop的核心能力,是hive优化的根本。这是这一年来,项目组所有成员宝贵的经验总结。   长期观察hadoop处理数据的过程,有几个显著的特征: 1.不怕数据多,就怕数据倾斜。 2.对jobs数比较多的作业运行效率相对比较低,比如即使有几百行的表,如果多次关联多次汇总,产生十几 阅读详情

相关推荐

【大数据Hive】hive 优化策略之job任务优化

hive job优化策略

congge_study的博客 9521

hive的hive.exec.parallel参数说明

hive.exec.parallel参数控制在同一个sql中的不同的job是否可以同时运行,默认为false. 下面是对于该参数的测试过程: 测试sql: select r1.a from ( select t.a from sunwg_10 t join sunwg_10000000 s on t.a=s.b) r1 join (select s.b from su...

SunWuKong_Hadoop的博客 1261

【大数据Hive】hive 表设计常用优化策略

hive表常用优化策略

congge_study的博客 8942

MapReduce任务报错:Unrecognized Hadoop major version number: 3.0.0-cdh6.2.1

问题描述: 之前写了一个读取RCFile的MapReduce任务,现在放到测试集群上报错了 错误信息: Error: java.lang.IllegalArgumentException: Unrecognized Hadoop major version number: 3.0.0-cdh6.2.1 at org.apache.hadoop.hive.shims.ShimL...

u013771019的专栏 1万+

企业微信审批流开发避坑指南:从零搭建自定义审批模板(含完整代码)

本文为企业微信审批流开发提供了从零搭建自定义审批模板的完整指南。通过对比内置模板与自建引擎的优劣,详细阐述了利用企业微信开放API和自建应用实现高度灵活审批流程的方案。文章重点解析了前端JS-SDK安全调用、后端签名生成与回调处理的核心代码,并分享了流程引擎设计、安全加固及性能监控等实战经验,帮助企业开发者避开常见陷阱,构建贴合业务的自定义审批系统。

weixin_28358083的博客 967

GIS常用坐标系简介

EPSG:4326是基于WGS 84的地理坐标系,使用经纬度表示,适用于全局定位和地理数据表示。它的缺点是在进行距离、面积计算等地理分析时不够准确。EPSG:3857是投影坐标系,使用平面米坐标表示,适用于在线地图展示,特别适合 Web 地图应用。虽然它在地图展示中很高效,但由于投影引起的变形问题,它不适合高精度地理测量和计算。

weixin_59096287的博客 1976

hive中的set hive.exec.parallel=true 参数说明

hive.exec.parallel参数控制在同一个sql中的不同的job是否可以同时运行,默认为false.下面是对于该参数的测试过程:测试sql:select r1.afrom (select t.a from sunwg_10 t join sunwg_10000000 s on t.a=s.b) r1 join (select s.b from sunwg_100000 t join su...

数据之美的博客 1万+

ENSP从下载到运行:用虚拟机搭建华为认证实验环境全流程(含USG6000V镜像配置)

本文提供了一份详细的华为ENSP仿真平台从下载、安装到配置USG6000V防火墙镜像的完整指南。内容涵盖前置软件安装、ENSP主程序配置、核心设备镜像导入及虚拟机资源分配策略,旨在帮助网络工程师和学习者快速搭建一个稳定、功能齐全的华为认证实验环境,为备考和模拟企业网络部署打下坚实基础。

weixin_29230865的博客 534

Hive使用的优化

一.前述 本节主要描述Hive的优化使用,Hive的优化着重强调一个 把Hive SQL 当做Mapreduce程序去优化 二.主要优化点 1.Hive运行方式: 本地模式 集群模式 本地模式 开启本地模式: set hive.exec.mode.local.auto=true; 注意: hive.exec.mode.local.auto.inputbytes.max默认值为128M 表示加载文件...

qq_43688472的博客 603

猿创征文|Qt 文件和目录应用讲解【QCoreApplication】【QFile、QFileInfo】【QTemporaryDir和QTemporaryFile】【QDir】【QFileSyste】

Qt 文件和目录精准讲解【QCoreApplication】【QFile、QFileInfo】【QTemporaryDir和QTemporaryFile】【QDir】【QFileSyste】【QFileDialog】 第一章 QCoreApplication类 第一节 QCoreApplication常用函数方法 第二节 QCoreApplication举例 第二章 QFile类 第一节 静态函数方法 第二节 成员函数方法 第三章 QFileInfo类 第一节 常用函数方法 第四章 QDir类

Qt历险记,专注Qt技术,三年医疗设备研发经验,1年机器视觉研发经验,半年柔性传感研发经验。 942

基于Python的链家与贝壳租房数据爬取及城市性价比分析

本文通过Python爬虫技术,实现对链家和贝壳平台全国主要城市租房数据的采集与分析。研究使用requestsSelenium和Playwright等现代化爬虫工具,结合代理IP和验证码识别技术应对反爬机制。采集的数据经过清洗后,从多维度分析不同城市租房市场的价格分布、面积特征和性价比差异,并使用可视化技术展示分析结果。本研究为租房者提供决策参考,也为租房市场研究提供数据支撑。关键词:Python爬虫;租房数据;数据分析;链家;贝壳。

2201_76125261的博客 530

Hive学习笔记(五)—Hive连接优化

1. Join 的基本原理 大家都知道,Hive 会将所有的 SQL 查询转化为 Map/Reduce 作业运行于 Hadoop 集群之上。在这里简要介绍 Hive 将 Join 转化为 Map/Reduce 的基本原理。 假定有 user 和 order 两张表,分别如下: user 表: sid name 1 apple 2 orange order 表: ui...

LJJZJ的博客 652

QEMU源码全解析 —— virtio(3)

QEMU源码全解析 —— virtio(3)

phmatthaus的专栏 1849

Hive学习笔记(五)——优化篇2

JOIN优化 大小表优化 大小表优化指的是在2张或2张以上的表进行join的时候,要保证连续查询中的表的大小从左到右依次是增加的。这样hive会将小表保存到内存中,Hive 可以在map端执行连接的过程,与内存中的小表进行逐一篇匹配,从而省略掉常规操作所需的的reduce过程。 第一种写法是按大小表位置来写,即小表写在前,大表写在后 divedends为小表 ;stocks为大表 SELECT s...

delet丶 317

Esp32蓝牙Hid调用方案 http执行设备、鼠标、键盘相关操作

本文主要介绍 Esp32 蓝牙 Hid 相关的多种操作方式,详细的设备、鼠标、键盘相关操作的 http 调用方法。下面是整理出的所有 http 调用方法和 rhino 引擎方式。本机调用的话直接使用http://localhost:8080 如果是局域网调用则使用软件里的地址 比如我的是http://192.168.1.5:8080。文件地址: https://www.123865.com/s/Qtm4jv-xyZbd?使用前需要一块烧录好的ESP32板子并在手机安装好embedded软件用于蓝牙通信。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 569

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

《离线和实时大数据开发实战》(五)Hive 优化实践

前面,我们陆陆续续聊过了 Hadoop原理实战、 Hive 的底层原理实践,今天就来聊一聊大家最关心的 Hive 优化实践。

云祁QI 5447

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Hive优化总结

一、SQL本身的优化 1、只select需要的列,避免select * 2、where条件写在子查询中,先过滤再关联 3、关联条件写在on中,而不是where中 4、数据量大时,用group by代替count distinct 5、数据量小时,用in代替join 6、避免笛卡尔积 7、join时大表放后面,使用相同的连接键 7、严格格式 Hive.mapred.mode,分 nonstrict,strict,默认是nonstrict, 如果设置为strict,对三种情况限制: (1)分区表必须加分区。

GodxvA 9060

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Hive优化方法汇总

1、Fetch抓取 Fetch 抓取是指,Hive 中对某些情况的查询可以不必使用 MapReduce 计算。例如:SELECT * FROM employees;在这种情况下,Hive 可以简单地读取 employee 对应的存储目录下的文件,然后输出查询结果到控制台。 在 hive-default.xml.template 文件中 hive.fetch.task.conversion 默认是 more,老版本 hive 默认是 minimal,该属性修改为 more 以后,在全局查找、字段查找、limi

南洲.的博客 4854

Hive优化

1. 概述 1.1 hive的特征: 可以通过SQL轻松访问数据的工具,从而实现数据仓库任务,如提取/转换/加载(ETL),报告和数据分析; 它可以使已经存储的数据结构化; 可以直接访问存储在Apache HDFS或其他数据存储系统(如Apache HBase)中的文件; Hive除了支持MapReduce计算引擎,还支持Spark和Tez这两种分布式计算引擎; 它提供类似sql的查询语句HiveQL对数据进行分析处理; 数据的存储格式有多种,比如数据源是二进制格式,普通文本格式等等; 1.2

m0_61607827的博客 4409

Hive优化的十大方法

hive 优化

thy822的专栏 1万+

Hive总结篇及Hive的优化

概述 Hive学习也有一段时间了,今天来对Hive进行一个总结,也是对自己的总结,作者还是个小白,有不对的地方请大家指出相互学习,共同进步。今天来谈一谈什么是Hive,产生背景,优势等一系列问题。 什么是Hive 老规矩:官网地址 Hive wiki. 先来谈谈自己的理解: 有些人可能会说Hive不就是写SQL的吗,那我们其实可以从另一个角度来理解:Hive很强大,只要写SQL就能解...

4万+

hive 优化

hive 优化

qq_43192537的博客 3006

Hive之——Hive SQL优化

一、Hive优化目标在有限的资源下,提高执行效率二、Hive执行HQL——&gt; Job——&gt; Map/Reduce三、执行计划查看执行计划explain [extended] hql四、Hive表优化1、分区静态分区动态分区set hive.exec.dynamic.partition=true; set hive.exec.dynamic.partition.mode=nonstric...

冰河的专栏 2万+

hive部分:hive的优化,MapReduce的优化

hive 核心思想: 把 Hive SQL 当做 Mapreduce 程序去优化。 以下 SQL 不会转为 Mapreduce 来执行: select 仅查询本表字段; where 仅对本表字段做条件过滤。 explain 命令可以显示执行计划: EXPLAIN [EXTENDED] query; EXTENDED 可以看到更详细 的信息。 本地模式提高执行效率 本地模式: map...

wyqwilliam的博客 2695

hive优化大全(hive的优化这一篇就够了)

文章目录写在前面一、概述1.1 数据倾斜1.2 MapReduce二、产生原因三、解决方案和避免方案3.1建表层面3.1.1 分区表 写在前面 前几天发的大数据组件之Hive(Hive学习一篇就够了),其访问量和点赞数很多,这次打算更新一点关于hive的语句优化和关于hive的一些配置的文章。希望大家持续关注,我会继续更新更多的文章。 一、概述 首先。我们为啥要进行优化。从事大数据开发的人员都体验过这样的感觉。当我们写完一个查询指令。当我们按下回车的时候,我们等到map的进度条到99%时,系统就像卡住一样。

m0_43405302的博客 4268
上一篇: 学习Hive(四)Hive视图、索引、运行方式、GUI接口、权限管理
下一篇: 学习HBase(二)HBase优化
MrBack
博客等级 码龄9年 27粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值