hive企业级调优策略之小文件合并

news2024/11/23 13:04:50

测试所用到的数据参考:

原文链接:https://blog.csdn.net/m0_52606060/article/details/135080511
本教程的计算环境为Hive on MR。计算资源的调整主要包括Yarn和MR。

优化说明

小文件合并优化,分为两个方面,分别是Map端输入的小文件合并,和Reduce端输出的小文件合并。

Map端输入文件合并

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

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

Reduce输出文件合并

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

set hive.merge.mapfiles=true;

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

set hive.merge.mapredfiles=true;

–合并后的文件大小

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

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

set hive.merge.smallfiles.avgsize=16000000;

优化案例

(1)示例用表
现有一个需求,计算各省份订单金额总和,下表为结果表。

drop table if exists order_amount_by_province;
create table order_amount_by_province(
    province_id string comment '省份id',
    order_amount decimal(16,2) comment '订单金额'
)
location '/order_amount_by_province';

(2)示例SQL语句

insert overwrite table order_amount_by_province
select
    province_id,
    sum(total_amount)
from order_detail
group by province_id;

(3)优化前
根据任务并行度一节所需内容,可分析出,默认情况下,该sql语句的Reduce端并行度为5,故最终输出文件个数也为5,下图为输出文件,可以看出,5个均为小文件。
在这里插入图片描述

在这里插入图片描述

(4)优化思路
若想避免小文件的产生,可采取方案有两个。
(1)合理设置任务的Reduce端并行度
若将上述计算任务的并行度设置为1,就能保证其输出结果只有一个文件。

set mapreduce.job.reduces=1;

再次执行上述的insert语句,观察结果表中的文件,只剩一个了。
在这里插入图片描述

在这里插入图片描述

(2)启用Hive合并小文件优化
设置以下参数:
–开启合并map reduce任务输出的小文件

set hive.merge.mapredfiles=true;

–合并后的文件大小

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

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

set hive.merge.smallfiles.avgsize=16000000;

再次执行上述的insert语句,观察结果表中的文件,只剩一个了。
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

C/C++编程:令人印象深刻的高级技巧案例

C/C编程语言在软件开发领域有着悠久的历史,由于其高效、灵活和底层访问能力,至今仍然被广泛应用。本文将介绍一些在C/C编程中令人印象深刻的高级技巧,帮助读者提升编程水平,更加高效地使用这两种强大的编程语言。 一、指针运算与…

针对企业的泄密,天锐绿盾提出十大解决方案

01 防止公司内部数据泄密 通过动态加解密技术,有效防止公司内部数据泄密。即员工在创建、编辑文档时会被自动加密存放在硬盘上,防止员工故意或由于疏忽而造成泄密或对文件恶意破坏。 管理思路>> ● 不改变员工使用习惯、不改变文件格式、不改变…

vite与webpack?

vite对比react-areate-app 1、构建速度 2、打包速度 3、打包文件体积

html行内元素和块级元素的区别?

HTML中的元素可以分为两种类型:行内元素(inline)和块级元素(block) 文章目录 什么是行内元素什么是块级元素元素转换行内元素转块级元素块级元素转行内元素 区别总结 什么是行内元素 HTML的行内元素(inli…

MATLAB - Gazebo 仿真环境

系列文章目录 前言 机器人系统工具箱(Robotics System Toolbox™)为使用 Gazebo 模拟器可视化的模拟环境提供了一个界面。通过 Gazebo,您可以在真实模拟的物理场景中使用机器人进行测试和实验,并获得高质量的图形。 Gazebo 可在…

promise:一文理解promise常用的方法

目录 第一章 介绍promise 1.1 简介 1.2 什么是地域回调 第二章 promise理论 2.1 promise的状态 2.2 promise对象的值 2.3 promise构造函数 2.4 Promise.resolve()与Promise.reject() 2.5 promise常用的几种方法 2.5.1 Promise.all(promises) 2.5.2 Promise.race(pr…

Elasticsearch的使用总结

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。 put/post请求:http://localhost:9200/索引库名称 {"settings":{"index":{"number_of_shards":1, # 分片数量…

HQL的其他优化

CBO优化 CBO是指Cost based Optimizer,即基于计算成本的优化。 在Hive中,计算成本模型考虑到了:数据的行数、CPU、本地IO、HDFS IO、网络IO等方面。Hive会计算同一SQL语句的不同执行计划的计算成本,并选出成本最低的执行计划。目前…

在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,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…