一、小文件合并优化

Hive中的小文件分为Map端的小文件和Reduce端的小文件。

(1)、Map端的小文件优化是通过CombineHiveInputFormat操作。相关的参数是:

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

(2)、Reduce端的小文件合并

Map端的小文件合并是为了将小文件合并成一个切片,然后使用一个MR任务来执行这个切片。而Reduce端的小文件合并是为了将多个小文件合并成为一个大文件。

其原理是根据计算任务输出的文件的平均大小进行判断,若符合条件,就会单独的启动一个额外的任务进行合并。

相关的参数:

--------------开启合并map only任务输出的小文件-----------

set hive.merge.mapfiles=true;

--------------开启合并map reduce任务输出的小文件-----------

set hive.merge.mapredfiles=true;

------触发小文件合并的阈值,若某个计算任务输出的文件平均大小低于该阈值,就会触发合并-----

set hive.merge.smallfiles.avgsize=16000000;

------合并后的文件大小------------

set hive.merge.size.per.task=256000000;

二、CBO优化

CBO全称就是Cost based Optimizer,即基于计算成本的优化。在Hive中,计算成本受到数据的行数、CPU个数、本地IO、HDFS IO、网络IO等方面的影响,Hive会计算同一个SQL语句各个执行计划的计算成本,然后选择出计算成本最低的执行计划来执行。目前CBO在Hive的MR引擎下主要用于join的优化。例如多表join时的join顺序。

相关参数为:

--------是否启用cbo优化--------

set hive.cbo.enable=true;

三、谓词下推优化

谓词下推是指尽量的将过滤操作前移,以减少后续计算步骤中的数据量。

相关的参数是:

---------是否开启谓词下推优化--------------

set hive.optimize.ppd=true;

其实,在CBO优化中也会完成一部分的谓词下推操作,因为经过谓词下推以后的执行计划的计算成本往往会更低一些。

四、矢量化计算优化

Hive的矢量化计算依赖于CPU的矢量计算操作。他可以使原有的标量计算转化为矢量化计算,提高查询和计算的效率。

在标量计算中,每一条加法计算就会产生一条指令,但是如果这一批计算都是加法计算,就可以先对这批数据矢量化,然后对矢量化后的数据用一次加法指令就可以了,这样就可以提高计算的效率。实现方式如图:

相关的参数设置为:

set hive.vectorized.execution.enable=true;

五、Fetch抓取优化

Fetch抓取优化的出现是因为有些情况下的查询其实不用走MapReduce,只需要简单的读取一下文件,将其中的结果读取出来就可以了。例如select * from emp;

默认情况下是开启这个参数的。相关参数是:

set hive.fetch.task.conversion=more;默认值就是more。none表示不开启,还有一个参数是minimal,但是用的很少,要是开启就直接用more就行了。

六、本地模式优化

当Hive的数据输入量较小的时候,触发任务执行的时间可能都比实际任务执行的时间长,这时就可以设置本地模式,在本地执行任务就可以了。对于小数据集来说,执行时间可以被明显的缩短。

七、并行执行优化

并行执行就是说一条SQL语句其实是分为了多个Stage来执行的,多个Stage之间可能有依赖关系,也可能会没有依赖关系,对于没有依赖关系的Stage,我们可以让他们并行的执行,这就是并行执行的优化目的。因为在默认情况下,不论Stage之间有没有依赖关系,他都只会一个个的执行Stage。

相关参数设置:

---启用并行执行优化
set hive.exec.parallel=true;

---同一个SQL语句的最大执行并行度,默认为8

set hive.exec.parallel.thread.number=8;

八、严格模式

Hive会严格的禁止一些危险的操作,这些危险的操作有:

(1)、分区表不使用分区字段过滤。不使用分区字段就代表着要操作的数据范围是整个表,这对于分区表的操作是十分危险的,因为整张表的数据量非常的巨大,对整张表的操作可能会占用巨大的资源。

(2)、使用order by没有使用limit过滤。order by也是一样,他会是对全表的数据进行排序,这也是十分危险的情况,一般在学习阶段因为数据量少不会注意这个要加上limit,但是在实际的生产环境下,数据量就是十分庞大,必须要加上limit才能够被允许执行。

(3)、笛卡尔积。也是十分消耗资源的一种操作。例如A表有1万条数据,B表有100条数据,进行笛卡尔积之后就会有100万条数据,造成了数据严重膨胀,所以一般情况下也要严格禁止这种操作的执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92877.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92877.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92877.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tlias智能学习辅助系统--Maven高级-继承

目录 一、打包方式与应用场景 二、父子工程继承关系 1. 父工程配置 2. 子工程配置 三、自定义属性与引用属性 1. 定义属性 2. 在 dependencyManagement 中引用 3. 子工程中引用 四、dependencyManagement 与 dependencies 的区别 五、项目结构示例 六、小结 在实际开…

把 AI 押进“小黑屋”——基于 LLM 的隐私对话沙盒设计与落地

标签:隐私计算、可信执行环境、LLM、沙盒、内存加密、TEE、SGX、Gramine ---- 1. 背景:甲方爸爸一句话,“数据不能出机房” 我们给某三甲医院做智能问诊助手,模型 70 B、知识库 300 GB。 甲方只给了两条铁律: 1. 患者…

Java 大视界 -- Java 大数据在智能教育学习效果评估指标体系构建与精准评估中的应用(394)

Java 大视界 -- Java 大数据在智能教育学习效果评估指标体系构建与精准评估中的应用(394)引言:正文:一、传统学习评估的 “数字陷阱”:看不全、说不清、跟不上1.1 评估维度的 “单行道”1.1.1 分数掩盖的 “学习真相”…

Dubbo 3.x源码(33)—Dubbo Consumer接收服务调用响应

基于Dubbo 3.1,详细介绍了Dubbo Consumer接收服务调用响应 此前我们学习了Dubbo Provider处理服务调用请求的流程,现在我们来学习Dubbo Consumer接收服务调用响应流程。 实际上接收请求和接收响应同属于接收消息,它们的流程的很多步骤是一样…

栈和队列:数据结构中的基础与应用​

栈和队列:数据结构中的基础与应用在计算机科学的领域中,数据结构犹如大厦的基石,支撑着各类复杂软件系统的构建。而栈和队列作为两种基础且重要的数据结构,以其独特的特性和广泛的应用,在程序设计的舞台上扮演着不可或…

服务端配置 CORS解决跨域问题的原理

服务端配置 CORS(跨域资源共享)的原理本质是 浏览器与服务器之间的安全协商机制。其核心在于服务器通过特定的 HTTP 响应头声明允许哪些外部源(Origin)访问资源,浏览器根据这些响应头决定是否放行跨域请求。以下是详细…

Unity笔记(五)知识补充——场景切换、退出游戏、鼠标隐藏锁定、随机数、委托

写在前面:写本系列(自用)的目的是回顾已经学过的知识、记录新学习的知识或是记录心得理解,方便自己以后快速复习,减少遗忘。主要是C#代码部分。十七、场景切换和退出游戏1、场景切换场景切换使用方法: SceneManager.LoadScene()&a…

用 Spring 思维快速上手 DDD——以 Kratos 为例的分层解读

用 Spring 思维理解 DDD —— 以 Kratos 为参照 ​ 在此前的学习工作中,使用的开发框架一直都是 SpringBoot,对 MVC 架构几乎是肌肉记忆:Controller 接请求,Service 写业务逻辑,Mapper 操作数据库,这套套路…

docspace|Linux|使用docker完全离线化部署onlyoffice之docspace文档协作系统(全网首发)

一、 前言 书接上回,Linux|实用工具|onlyoffice workspace使用docker快速部署(离线和定制化部署)-CSDN博客,如果是小公司或者比如某个项目组内部使用,那么,使用docspace这个文档协同系统是非常合适的&…

【教程】如何高效提取胡萝卜块根形态和颜色特征?

胡萝卜是全球不可或缺的健康食材和重要的经济作物, 从田间到餐桌,从鲜食到深加工,胡萝卜在现代人的饮食和健康中扮演着极其重要的角色,通过量化块根形态和色泽均匀性,可实现对高产优质胡萝卜品种的快速筛选。工具/材料…

Python初学者笔记第二十四期 -- (面向对象编程)

第33节课 面向对象编程 1. 面向对象编程基础 1.1 什么是面向对象编程面向过程:执行者 耗时 费力 结果也不一定完美 面向对象:指挥者 省时 省力 结果比较完美面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用"对象&…

Go 语言 里 `var`、`make`、`new`、`:=` 的区别

把 Go 语言 里 var、make、new、: 的区别彻底梳理一下。1️⃣ var 作用:声明变量(可以带初始值,也可以不带)。语法: var a int // 声明整型变量,默认值为 0 var b string // 默认值 ""…

计算机网络---IP(互联网协议)

一、IP协议概述 互联网协议(Internet Protocol,IP)是TCP/IP协议族的核心成员,位于OSI模型的网络层(第三层),负责将数据包从源主机传输到目标主机。它是一种无连接、不可靠的协议,提供…

DataFun联合开源AllData社区和开源Gravitino社区将在8月9日相聚数据治理峰会论坛

🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨杭州奥零数据科技官网&#xff…

【工具】通用文档转换器 推荐 Markdown 转为 Word 或者 Pdf格式 可以批量或者通过代码调用

【工具】通用文档转换器 推荐 可以批量或者通过代码调用 通用文档转换器 https://github.com/jgm/pandoc/ Pandoc - index 下载地址 https://github.com/jgm/pandoc/releases 使用方法: 比如 Markdown 转为 Word 或者 Pdf格式 pandoc -s MANUAL.txt -o example29.docx …

【UEFI系列】Super IO

文章目录一、什么是Super IO二、Super IO的作用常见厂商三、逻辑设备控制如何访问SIO逻辑设备的配置寄存器具体配置数值四、硬件监控(hardware monitor)一、什么是Super IO Super Input/Output超级输入输出控制器。 通过LPC(low pin count&a…

飞算 JavaAI 2.0.0 测评:自然语言编程如何颠覆传统开发?

一、前言 在AI技术高速发展的今天,编程方式正在经历一场革命。传统的“手写代码”模式逐渐被AI辅助开发取代,而飞算JavaAI 2.0.0的推出,更是让自然语言编程成为现实。 作为一名长期使用Java开发的程序员,我决定深度体验飞算Java…

Dubbo + zk 微服务

一、安装zk注册中心 win版本:windows环境下安装zookeeper教程详解(单机版)-CSDN博客 linux版本: 二、服务提供方搭建 引入dubbo和zk依赖 提供接口 使用注解方式实现接口级注册到zk,而springcloud是将服务注册到注册…

聆思duomotai_ap sdk适配dooiRobot

一、说明 1、duomotai_ap介绍 duomotai_ap是一个针对多模态开发板(如 CSK6-MIX 开发板)的大模型 AI 开发套件 SDK,主要用于开发语音、视觉等多模态 AI 应用。 2、dooiRobot介绍 基于Doly 机器人的经典外观设计,采用聆思CSK6011A…

Photoshop软件打开WebP文件格的操作教程

Photoshop软件打开WebP文件格的操作教程,好吧,这是英文原版: Photoshop 23.2 原生支持 WebP 格式,无需插件即可打开、编辑和保存 WebP 文件。用户可通过“文件 > 另存为副本”选择 WebP 格式,调整无损/有损压缩及质…