HQL的其他优化

news2024/11/23 13:47:19

CBO优化

        CBO是指Cost based Optimizer,即基于计算成本的优化。

        在Hive中,计算成本模型考虑到了:数据的行数、CPU、本地IO、HDFS IO、网络IO等方面。Hive会计算同一SQL语句的不同执行计划的计算成本,并选出成本最低的执行计划。目前CBO在hive的MR引擎下主要用于join的优化,例如多表join的join顺序。

        关闭CBO优化:

        根据执行计划,可以看出,三张表的join顺序如下:

        开启CBO优化

        根据上述案例可以看出,CBO优化对于执行计划中join顺序是有影响的,其之所以会将province_info的join顺序提前,是因为province info的数据量较小,将其提前,会有更大的概率使得中间结果的数据量变小,从而使整个计算任务的数据量减小,也就是使计算成本变小。

Map端并行度

        Map端的并行度,也就是Map的个数。是由输入文件的切片数决定的。一般情况下,Map端的并行度无需手动调整。

        查询的表中存在大量小文件情况下:

        按照Hadoop默认的切片策略,一个小文件会单独启动一个map task负责计算。若查询的表中存在大量小文件,则会启动大量map task,造成计算资源的浪费。这种情况下,可以使用Hive提供的CombineHiveInputFormat,多个小文件合并为一个切片从而控制map task个数。

Reduce端并行度

        Reduce端的并行度,也就是Reduce个数。相对来说,更需要关注。Reduce端的并行度,可由用户自己指定,也可由Hive自行根据该MR Job输入的文件大小进行估算。Hive自行估算Reduce并行度时,是以整个MR Job输入的文件大小作为依据的。因此,在某些情况下其估计的并行度很可能并不准确,此时就需要用户根据实际情况来指定Reduce并行度了。

小文件合并

        小文件合并优化,分为两设置以下参数:个方面,分别是Map端输入的小文件合并,和Reduce端输出的小文件合并。

        合并Map端输入的小文件,是指将多个小文件划分到一个切片中,进而由一个Map Task去处理。目的是防止为单个小文件启动一个Map Task,浪费计算资源。

相关参数为:

--可将多个小文件切片,合并为一个切片,进而由一个map任务处理
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; 

        合并Reduce端输出的小文件,是指将多个小文件合并成大文件。目的是减少HDFS小文件数量。其原理是根据计算任务输出文件的平均大小进行判断,若符合条件,则单独启动一个额外的任务进行合并。可设置以下参数:

--开启合并map reduce任务输出的小文件
set hive.merge.mapredfiles=true;

--合并后的文件大小
set hive.merge.size.per.task=256000000;

--触发小文件合并任务的阈值,若某计算任务输出的文件平均大小低于该值,则触发合并
set hive.merge.smallfiles.avgsize=16000000;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在Java中高效使用Lambda表达式和流(Streams)的技巧

Java中如何高效使用Lambda表达式和流(Streams)的技巧 1. 简介 在Java中,Lambda表达式和流(Streams)是Java 8引入的两个强大的特性。Lambda表达式为Java添加了一种简洁的方式来实现函数式编程,而流提供了一…

056:vue工具 --- CSS在线格式化

第056个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

【Unity 实用工具篇】✨| I2 Localization 实现本地化及多种语言切换,快速上手

前言【Unity 实用工具篇】| I2 Localization 实现本地化及多种语言切换,快速上手一、多语言本地化插件 I2 Localization1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍三、通过示例快速上手3.1 添加 Languages语种3.2 添加 Term资源3.3 静

如何确保对称密钥管理的存储安全?

确保对称密钥管理的存储安全是保障信息安全的重要一环。以下是一些建议,以确保对称密钥管理的存储安全: 使用安全存储设备:选择使用经过验证的安全存储设备来存储对称密钥。这些设备通常具有高度的物理安全性,可以防止未经授权的访…

【CLion】使用CLion开发STM32

本文主要记录使用CLion开发STM32,并调试相关功能 使用的CLion版本:2023.3.1 CLion嵌入式配置教程:STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载:Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…

面试每日三题

MySQL篇 MySQL为什么使用B树索引 B树每个节点可以包含关键字和对应的指针,即B树的每个节点都会存储数据,随机访问比较友好,B树的叶子节点之间是无指针相连接的 B树所有关键字都存储在叶子节点上,非叶子节点只存储索引列和指向子…

【算法Hot100系列】删除链表的倒数第 N 个结点

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Mac安装Nginx

一起学习 1、确认你的电脑是否安装homebrew,打开电脑终端 输入: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2、确认homebrew是否安装成功,在终端输入: br…

表格的合并

1.需要实现的效果 use-span-method.js文件 * 合并相同数据,导出合并列所需的方法(只适合el-table)* param {Object} data* param {Object} rowSpanArray*/ export function getRowSpanMethod(data, rowSpanArray) {/*** 要合并列的数据*/const rowSpanNumObject {}…

读取spring boot项目resource目录下的文件

背景 项目开发过程中,有一些情况下将配置文件放在resource下能简化代码实现和部署时的打包步骤。例如: 项目中使用的数据库升级脚本、初始化脚本。将文件放到resource下,打包在jar包中,不能直接通过File路径读取。下面介绍两种读…

论文降重方法同义词替换的实际应用与成效评估

大家好,今天来聊聊论文降重方法同义词替换的实际应用与成效评估,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文降重方法同义词替换的实际…

【文末送书】OpenCV4工业缺陷检测的六种方法

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

刷题第四十七天 583. 两个字符串删除操作 72. 编辑距离

class Solution:def minDistance(self, word1: str, word2: str) -> int:# dp: 以i - 1结尾的word1和以j - 1结尾的word2相同需要的最小步数# if word1[i - 1] word2[j - 1]: dp[i][j] dp[i - 1][j - 1]# else: dp[i][j] min(dp[i - 1][j], dp[i][j - 1]) 1dp [[0] * (…

postman脚本生成可执行文件(6)

一.通过Python脚本(executescript.py)执行newman指令 #!usr/bin/python import subprocess from datetime import datetimeclass Newman_automate():Newman_automate():该类主要是定义postman脚本执行__path:cmd命令行中执行newnan脚本指令(…

DataGrip 2023.3 新功能速递!

1 数据可视化 自 DataGrip 2023.3 发布以来,已整合 Lets-Plot 库,实现数据可视化。该可视化功能可用于所有三种类型的网格: 主选项卡:在打开表、视图或 CSV 文件时,在分割模式下显示图表。结果选项卡:在 服…

OO AutoBackup 6: 自动备份同步文件工具箱软件

保护您的数据,让备份变得轻松简单。 概述 O&O AutoBackup 6 是一款功能强大的自动备份同步文件工具箱软件。通过实时监控您的文件和文件夹,O&O AutoBackup 6 确保您的重要数据始终得到保护。无论您是在工作还是在家庭环境中,这款软…

二叉树【数据结构】

目录 二叉树1. 二叉树定义二叉树的存储定义 2. 遍历二叉树(1) 前序遍历(2) 中序遍历(3) 后序遍历(4) 层序遍历 3. 二叉树的相关操作(1) 二叉树的初始化(2) 二叉树的结点的手动创建(3) 二叉树结点的个数(4) 二叉树叶子结点的个数(5) 二叉树的高度(6) 第k层结点个数(7) 通过前序遍…

Vue中父子Props传值不能修改的原因分析以及解决办法

Vue 官方文档中对于 Prop 的定义: Prop 是你可以在组件上注册的一些自定义属性。当一个值传递给一个 props 属性的时候,它就变成了那个组件实例的一个属性。为了给子组件传递数据,我们需要在该组件上使用 v-bind 指令绑定需要传递的数据。 由…

【LeetCode刷题-树】-- 235.二叉搜索数的最近公共祖先

235.二叉搜索数的最近公共祖先 方法:二次遍历 先遍历得到从根节点到p、根节点到q的路径,然后再遍历得到公共节点 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* Tr…

ros2 学习04 工作空间说明及示例

ros2 术语说明: 大家在学习其他的开发语言之前的学习和开发中,应该有接触过某些集成开发环境,比如Visual Studio、Eclipse、Qt Creator等,当我们想要编写程序之前,都会在这些开发环境的工具栏中,点击一个“…