hive日常积累优化技巧

一、join优化

Join查找操作的基本原则:应该将条目少的表/子查询放在 Join 操作符的左边。原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存,将条目少的表放在左边,可以有效减少发生内存溢出错误的几率。Join查找操作中如果存在多个join,且所有参与join的表中其参与join的key都相同,则会将所有的join合并到一个mapred程序中。案例:SELECT a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)  在一个mapre程序中执行join
SELECT a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key2)   在两个mapred程序中执行join
Map join的关键在于join操作中的某个表的数据量很小,案例:
SELECT /*+ MAPJOIN(b) */ a.key, a.value
FROM a join b on a.key = b.key
Mapjoin 的限制是无法执行a FULL/RIGHT OUTER JOIN b,和map join相关的hive参数:hive.join.emit.interval  hive.mapjoin.size.key  hive.mapjoin.cache.numrows
由于join操作是在where操作之前执行,所以当你在执行join时,where条件并不能起到减少join数据的作用;案例:
SELECT a.val, b.val FROM a LEFT OUTER JOIN b ON (a.key=b.key)
WHERE a.ds=’2009-07-07′ AND b.ds=’2009-07-07′
最好修改为:
SELECT a.val, b.val FROM a LEFT OUTER JOIN b
ON (a.key=b.key AND b.ds=’2009-07-07′ AND a.ds=’2009-07-07′)
在join操作的每一个mapred程序中,hive都会把出现在join语句中相对靠后的表的数据stream化,相对靠前的变的数据缓存在内存中。当然,也可以手动指定stream化的表:SELECT /*+ STREAMTABLE(a) */ a.val, b.val, c.val FROM a JOIN b ON (a.key = b.key1) JOIN c ON (c.key = b.key1)

二、group by 优化
Map端聚合,首先在map端进行初步聚合,最后在reduce端得出最终结果,相关参数:
· hive.map.aggr = true是否在 Map 端进行聚合,默认为 True
· hive.groupby.mapaggr.checkinterval = 100000在 Map 端进行聚合操作的条目数目
数据倾斜聚合优化,设置参数hive.groupby.skewindata = true,当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同的 Group By Key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group By Key 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce 中),最后完成最终的聚合操作。

三、合并小文件
文件数目过多,会给 HDFS 带来压力,并且会影响处理效率,可以通过合并 Map 和 Reduce 的结果文件来消除这样的影响:
· hive.merge.mapfiles = true是否和并 Map 输出文件,默认为 True
· hive.merge.mapredfiles = false是否合并 Reduce 输出文件,默认为 False
· hive.merge.size.per.task = 256*1000*1000合并文件的大小

四、Hive实现(not) in
通过left outer join进行查询,(假设B表中包含另外的一个字段 key1
select a.key from a left outer join b on a.key=b.key where b.key1 is null
通过left semi join 实现 in
SELECT a.key, a.val FROM a LEFT SEMI JOIN b on (a.key = b.key)
Left semi join 的限制:join条件中右边的表只能出现在join条件中。

五、排序优化
Order by 实现全局排序,一个reduce实现,效率低
Sort by 实现部分有序,单个reduce输出的结果是有序的,效率高,通常和DISTRIBUTE BY关键字一起使用(DISTRIBUTE BY关键字 可以指定map 到 reduce端的分发key)
CLUSTER BY col1 等价于DISTRIBUTE BY col1 SORT BY col1

六、使用分区
Hive中的每个分区都对应hdfs上的一个目录,分区列也不是表中的一个实际的字段,而是一个或者多个伪列,在表的数据文件中实际上并不保存分区列的信息与数据。Partition关键字中排在前面的为主分区(只有一个),后面的为副分区
静态分区:静态分区在加载数据和使用时都需要在sql语句中指定
案例:(stat_date=’20120625′,province=’hunan’)
动态分区:使用动态分区需要设置hive.exec.dynamic.partition参数值为true,默认值为false,在默认情况下,hive会假设主分区时静态分区,副分区使用动态分区;如果想都使用动态分区,需要设置set hive.exec.dynamic.partition.mode=nostrick,默认为strick
案例:(stat_date=’20120625′,province)

七、Distinct 使用
Hive支持在group by时对同一列进行多次distinct操作,却不支持在同一个语句中对多个列进行distinct操作。

八、Hql使用自定义的mapred脚本
注意事项:在使用自定义的mapred脚本时,关键字MAP REDUCE 是语句SELECT TRANSFORM ( … )的语法转换,并不意味着使用MAP关键字时会强制产生一个新的map过程,使用REDUCE关键字时会产生一个red过程。
自定义的mapred脚本可以是hql语句完成更为复杂的功能,但是性能比hql语句差了一些,应该尽量避免使用,如有可能,使用UDTF函数来替换自定义的mapred脚本

九、UDTF
UDTF将单一输入行转化为多个输出行,并且在使用UDTF时,select语句中不能包含其他的列,UDTF不支持嵌套,也不支持group by 、sort by等语句。如果想避免上述限制,需要使用lateral view语法,案例:
select a.timestamp, get_json_object(a.appevents, ‘$.eventid’), get_json_object(a.appenvets, ‘$.eventname’) from log a;
select a.timestamp, b.*
from log a lateral view json_tuple(a.appevent, ‘eventid’, ‘eventname’) b as f1, f2;
其中,get_json_object为UDF函数,json_tuple为UDTF函数。
UDTF函数在某些应用场景下可以大大提高hql语句的性能,如需要多次解析json或者xml数据的应用场景。

十、聚合函数count和sum
Count和sum函数可能是在hql语句中使用的最为频繁的两个聚合函数了,但是在hive中count函数在计算distinct value时支持加入条件过滤。

Hive SQL字符串匹配:LIKE、RLIKE与REGEXP核心区别与性能优化实战 在数据仓库和数据分析领域,字符串模式匹配是数据处理的基础操作,直接影响查询效率与结果准确性。其核心原理在于通过特定规则在文本中定位目标内容,从简单的通配符匹配到复杂的正则表达式,技术实现逐层深入。掌握不同匹配方式的技术价值,在于能根据场景在查询性能、开发效率与功能灵活性之间做出最佳权衡,这对于处理海量数据的Hive SQL优化至关重要。在数据清洗、日志分析、规则验证等典型应用场景中,合理选择匹配工具能显著提升任务执行效率。本文聚焦于Hive中LIKE、RLIKE、REGEXP这三个核心操作符,通过对比其匹配 阅读详情

相关推荐

相机图像质量研究(22)常见问题总结:CMOS期间对成像的影响--光学串扰

光学串扰是一个比较难以理解的光学现象,实际影响往往不大。一、光学串扰产生的原因通常是入射角度太大,光线在不同通道之间产生了混叠二、光学串扰产生的现象光学串扰容易导致迷宫纹。总结本节讲了光学串扰产生的原因,现象。

xiaoshixiu的专栏 1573

Hive 查询优化【引文】

一、join优化 Join查找操作的基本原则:应该将条目少的表/子查询放在 Join 操作符的左边。原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存,将条目少的表放在左边,可以有效减少发生内存溢出错误的几率。 Join查找操作中如果存在多个join,且所有参与join的表中其参与join的key都相同,则会将所有的join合并到一个map...

浮夸 263

Halcon Camera-calibration 相关算子(一)

Halcon Camera-calibration 相关算子介绍

qq_44744164的博客 1367

关于hive中join的一些优化事项

hive中join表连接的优化

龙神add-走向数据架构师的路 569

28-基于STM32单片机的便携式健康监测系统设计与实现(程序+原理图+元件清单)

本文详细介绍了基于STM32单片机的便携式健康监测系统设计与实现,该系统集成MAX30102光电传感器和MSP20压力传感器,实时监测心率、血氧和血压等关键生理指标。通过STM32F103C8T6主控芯片和HC-05蓝牙模块,实现数据采集、处理及无线传输,具有便携性高、操作简便等特点,适用于家庭健康监护和户外运动场景。

weixin_29191669的博客 420

【Proteus仿真】基于AT89C51单片机的单片机双向通信

本文介绍了基于AT89C51单片机实现双向通信的系统设计。系统采用MAX232芯片实现TTL与RS-232电平转换,通过CONN-D9F接口建立串行通信连接。甲机程序通过按键控制发送不同指令字符,同时接收乙机数据驱动数码管显示;乙机程序根据接收指令控制LED显示状态,并可发送0-10数字至甲机。文中详细说明了MAX232电平转换原理、DB9接口定义,以及完整的单片机控制程序代码,包括串口初始化、数据收发处理等关键功能实现,为嵌入式系统串口通信开发提供了实用参考方案。

XU157303764的博客 1095

Hive优化的十大方法

hive 优化

thy822的专栏 1万+

第五章:转矩脉动的成因与抑制技术:从根源到解决方案

本文摘要: 转矩脉动是电机运行中的关键问题,涉及电磁、机械和控制三大因素。电磁因素包括谐波、齿槽转矩和磁饱和;机械因素涵盖动平衡和轴承缺陷;控制因素涉及测量误差和死区效应。解决方案采用多层面优化:硬件上通过斜极设计和死区补偿(提供算法代码)降低脉动70%;控制上采用扰动观测器和谐振控制器进行动态抑制;针对齿槽转矩开发离线学习+在线查表补偿方案。测试环节建立振动噪声量化评价体系,包括加速度计测量和A计权声学评估。最终形成从设计到控制的系统化抑制策略,显著提升电机静音性、平顺性和寿命。

汽车软件开发 341

Hive优化(21种方案)

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

小道的博客 6074

聊聊5G RedCap与eRedCap

而eRedCap作为R18引入的升级版本,进一步将峰值速率限制为10Mbps,仅支持FR1频段,通过减少物理资源块(PRB)数量和优化休眠机制,实现了更低的功耗和成本,成为NB-IoT/LTE-M的理想升级路径。RedCap与eRedCap的出现,正是为了填补“中间地带”—它们既具备高于mMTC的传输速率(接近LTE Cat 4水平),又能实现传统5G NR无法企及的低功耗与低成本,完美适配智能电表、工业网关、智能穿戴设备等“中等需求”物联网设备。时延则低至50ms以下,满足工业机械远程控制的实时性需求。

asd199086的博客 1745

Multica 自托管部署与使用入门:从上线到让 AI Agent 真正干活

Multica是一个将AI Agent作为团队成员的任务协作平台,支持自托管部署。本文介绍了完整的单机部署流程: 核心架构包括前端界面、后端服务、PostgreSQL数据库和Runtime执行机器 推荐使用Docker Compose部署,需配置数据持久化目录 提供详细的docker-compose.yml和.env配置文件说明 重点注意事项:数据库密码和JWT密钥必须修改,生产环境配置必须设为production 需正确配置前端访问地址和WebSocket连接 部署完成后,用户可创建AI Agent并将其

q742971636的博客 1732

hive 优化

hive 优化

qq_43192537的博客 3006

如何使用 Python 爬虫获取猫眼电影数据:电影评分与评论分析

随着互联网的快速发展,越来越多的人开始使用各种在线平台来了解电影信息,猫眼电影作为一个非常流行的在线电影票务平台,提供了详细的电影评分、评论和票房数据。本篇博客将详细介绍如何使用 Python 爬虫技术获取猫眼电影平台上的电影数据,重点关注电影评分和用户评论的爬取,分析其背后的数据处理和反爬虫技术。如果你对数据分析、电影评论分析等话题感兴趣,可以根据本文的示例进一步深入挖掘更多的数据,为决策提供支持,或为电影产业的相关研究提供有价值的分析依据。有些猫眼电影的页面数据是动态加载的,使用。

2201_76125261的博客 1623

干货-SQL日常使用经验积累

干货-SQL日常使用经验积累一.背景二.语法2.1hive简介2.2hive常用2.2常用SQL语法记录2.2.1日期相关2.2.2字符串相关2.2.3数学运算2.2.4整表操作2.2.5其他(不知道咋归类)三.优化3.1裁剪3.2join3.3数据倾斜3.4其他四.参数设置 一.背景 记录日常工作中使用到的Hive-SQL相关知识,不是基础的SQL语法介绍,一般是坑比较多的语句或者优化技巧。 二.语法 2.1hive简介 Hive的内置四大组件(Driver, Compiler, Optimizer, E

qq_26939927的博客 658

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

hive使用日常积累

hive 在两个表join时,其实on可以看做一个where条件  比如下面的这个sql: select devicename,companyid,groupid,did,loginname,userid,detailtime,hour,intervel,case when hour in(8,9,10,11,12,13,14,15,16,17) and intervel=0 then 2

Liberty_zt的博客 361

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

web访问hive速度怎么样_关于优化Hive查询速度的一些实践

写在前面由于工作需要,笔者在最近的日常工作中大量使用了Hive。由于其查询速度较为缓慢,笔者花了大量的时间去学习如何优化Hive的查询速度。所谓久病成良医,笔者在这过程中也积累了一些经验,在此做一个分享与总结,也希望能帮助到需要的人。另外,许多数据分析的JD中都要求有Hive经验。因此,有志于转行数据分析的朋友们也可以借此了解一下Hive。本文基于Hue运行Hive。PS:笔者对Hive及其相关理...

weixin_39869693的博客 375

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hive使用适用场景_前言:企业中Hive使用的场景和tips

本文旨在简单介绍Hive、Spark、Hadoop等在企业中的关系和使用场景。一、几个概念辨析大数据两个流程:离线数据的处理;实时流数据的处理;几个区分:Hive(数据仓库工具)、Scala(一种编程语言)、Spark(为大规模数据处理而设计的快速通用的计算引擎)、Hadoop(分布式系统基础架构);一个集成方案:hadoop+spark+hive+mysql;hadoop提供HDFS服务,spa...

weixin_28725959的博客 1303

做了两年数仓,积累的12条SQL调优技巧

本文是作者本人做数仓调优时,所经常使用的SQL调优技巧,这些“技巧”也是经过日常不断摸索、问题排查以及网络检索并且经过本人在线上大规模使用过的,对于下面这12条(不算多,但特别有用)调优小“技巧”,希望能帮助阅读本文的同学能够在日常编写分析语句时,提升任务执行的效率。但是在大数据背景下,因为b列所有的值都会形成以key值,极有可能发生OOM。好了,以上这十二条虽然不多,并且看起来简单,你可以作为一种复习来看,那么对于刚开始做不久的同学,可以将这些技巧严格的执行在日常工作中,并且希望你具备一定的调优的意识。

分享云原生大数据技术和个人成长、职业发展相关内容 989

平安ETL开发面试积累

ETL是什么?   ETL的英文全称叫做Extraction(抽取)Transformation(转换)Loading(加载),Extraction就是指将数据从一个数据源或者多个数据源抽取过来的一个动作,数据源可能是关系型的数据库、表,也可能是文本文件,或者是一个程序的API接口,Transformation在BI里面是指数据的清洗、合并、拆分、加工,数据逻辑计算处理的一个过程,通常会按照一定的业务逻辑规则进行计算,最后转换成符合业务模型、分析模型规范的数据,简单来说不管是大数据还是小数据,都是讲不规范的

qq_44161785的博客 617

cesium加载倾斜优化_深入浅出Hive数据倾斜

高级数据分析师 渊虹引言我们日常使用HSQL的时候经常会遇到这样一个令人苦恼的场景:执行一个非常简单的SQL语句,任务的进度条长时间卡在99%,不确定还需多久才能结束,这种现象称之为数据倾斜。这一现象经常出现的原因在于分析师主要关注分析逻辑和数据结果的正确性,却很少关注SQL语句的执行过程与效率。在处理海量数据的实践中,个推分析师需要解决各种困难,以高效、准确地使用SQL语句进行数据处理,在此过程...

weixin_42395740的博客 169

hive 去重 字符串_深入浅出Hive数据倾斜

高级数据分析师 渊虹引言我们日常使用HSQL的时候经常会遇到这样一个令人苦恼的场景:执行一个非常简单的SQL语句,任务的进度条长时间卡在99%,不确定还需多久才能结束,这种现象称之为数据倾斜。这一现象经常出现的原因在于分析师主要关注分析逻辑和数据结果的正确性,却很少关注SQL语句的执行过程与效率。在处理海量数据的实践中,个推分析师需要解决各种困难,以高效、准确地使用SQL语句进行数据处理...

weixin_35995565的博客 217

cdh hive on spark_前言:企业中Hive使用的场景和tips

本文旨在简单介绍Hive、Spark、Hadoop等在企业中的关系和使用场景。一、几个概念辨析大数据两个流程:离线数据的处理;实时流数据的处理;几个区分:Hive(数据仓库工具)、Scala(一种编程语言)、Spark(为大规模数据处理而设计的快速通用的计算引擎)、Hadoop(分布式系统基础架构);一个集成方案:hadoop+spark+hive+mysql;hadoop提供HDFS服务,spa...

weixin_39722965的博客 173

数据仓库【SQL优化】

每个sqlboy工作一段时间后都会面临这一个能力提升问题--Sql优化。本文通过更通俗易懂的话术讲解sql优化的策略内容。提供一个从业务需求探查到最终上线全流程的sql优化方案,如有缺失,希望大家多多交流补充。

xiayuhaisong的博客 1949

hive查看表中列的信息命令_前言:企业中Hive使用的场景和tips

本文旨在简单介绍Hive、Spark、Hadoop等在企业中的关系和使用场景。一、几个概念辨析大数据两个流程:离线数据的处理;实时流数据的处理;几个区分:Hive(数据仓库工具)、Scala(一种编程语言)、Spark(为大规模数据处理而设计的快速通用的计算引擎)、Hadoop(分布式系统基础架构);一个集成方案:hadoop+spark+hive+mysql;hadoop提供HDFS服务,spa...

weixin_39954569的博客 104

从Hive到MySQL:Sqoop数据导出避坑指南(含可视化彩蛋)

本文详细解析了使用Sqoop将Hive数据导出至MySQL的完整流程与实战避坑指南。重点剖析了字段类型映射、空值处理、性能优化等核心挑战,并提供了自动化数据一致性验证与基于Pyecharts的可视化实践方案,帮助数据工程师高效完成数据迁移与展示。

cake8的博客 829

一个优秀的大数据开发工程师的日常是怎么样的?

        大数据开发工程师,看起来很高端。但很多时候都是脱离不了开发的层面,基本上大部分人都是api的调用者。除了少部分人是为了大数据开发的底层服务。         那么,作为优秀的大数据开发工程师是怎么样的体验呢,可以先聊聊技术方...

大数据梦想家 3963
上一篇: PostgreSQL服务启动又停止的解决方法
下一篇: 装饰模式
weixir123
博客等级 码龄16年 1粉丝 207原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值