【大数据之Hive】二十五、HQL语法优化之小文件合并

这篇具有很好参考价值的文章主要介绍了【大数据之Hive】二十五、HQL语法优化之小文件合并。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 优化说明

  小文件优化可以从两个方面解决,在Map端输入的小文件合并,在Reduce端输出的小文件合并。

1.1 Map端输入文件合并

  合并Map端输入的小文件是指将多个小文件分到同一个切片中,由一个Map Task处理,防止单个小文件启动一个Map Task,造成资源浪费。
相关参数:

--将多个小文件切片合成一个切片,由一个map task处理
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

1.2 Reduce输出文件合并

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

--开启合并map only任务输出的小文件,针对只有map的计算任务
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;

2 案例

1、示例SQL语句

--计算各省份订单金额总和,下表为结果表
drop table if exists order_amount_by_province;
create table order_amount_by_province(
    provonce_id string comment '省份id',
    order_amount decimal(16,2) comment '订单金额'
)
location '/order_amount_by_province';

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

2、优化前
  根据任务并行度,在默认情况下,该sql语句的Reduce端并行度为5,所以最终输出的文件个数也为5,且均为小文件。

3、优化思路
方案一、合理设置任务的Reduce端并行度
  将任务并行度设置为1,保证输出结果为1个文件。

set mapreduce.job.reduces=1;

方案二、启用HIve合并小文件进行优化
设置参数:文章来源地址https://www.toymoban.com/news/detail-635984.html

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

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

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

到了这里,关于【大数据之Hive】二十五、HQL语法优化之小文件合并的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • hql、数据仓库、sql调优、hive sql、python

    HQL(Hibernate Query Language) 是面向对象的查询语言 SQL的操作对象是数据列、表等数据库数据 ; 而HQL操作的是类、实例、属性 数据仓库的定义 英文名称为Data Warehouse,可简写为DW或DWH。 为企业级别的决策制定过程,提供所有类型数据支持的战略集合。 它出于分析性报告和决策支持

    2024年02月03日
    浏览(63)
  • 【大数据之Hive】十三、Hive-HQL函数之单行函数和高级聚合函数

      Hive内置函数:单行函数、聚合函数、炸裂函数、窗口函数。   单行函数的特点是一进一出,即输入一行,输出一行;包括算数运算函数、数值函数、字符串函数、日期函数、流程控制函数、集合函数等。 3.1 substring 截取字符串 语法: 3.2 replace 全局替换 语法: 3.3 re

    2024年02月09日
    浏览(47)
  • 一百二十五、Hive——hive性能优化

    在Hive中运行SQL,性能优化是个大坑! 总结一些 hive性能优化的参数设置 一、hive性能优化 set hive.vectorized.execution.enabled=false; set hive.auto.convert.join=false; --map阶段内存不足 set mapreduce.map.memory.mb=10150; set mapreduce.map.java.opts=-Xmx6144m; -- reduce阶段内存不足 set mapreduce.reduce.memory.mb=10150;

    2024年02月09日
    浏览(38)
  • 【第二十五课】动态规划:完全背包问题(acwing-3 / 公式推导 / 思路理解 / 优化 / c++代码)

    目录 思路 朴素代码 优化 公式推导上  二维代码  一维代码 公式理解上   在开始看完全背包问题之前,可能需要先了解01背包及其解决办法。 指路👇 【第二十五课】动态规划:01背包问题(acwing-2 / 思路 / 含一维数组优化 / c++代码) 这个问题和01背包的区别就是 每件物品可以

    2024年03月19日
    浏览(62)
  • HIVE语法优化之Join优化

    桶用两表关联字段,MapJoin时需要将小表填入内存,这时候,分桶就起到了作用 一个stage阶段代表一个mr执行,好几个MR,会吧每一个MR的结果都压缩 Mysql 慢查询 如果sql语句执行超过指定时间,定义该sql为慢查询,存储日志, 查问题: SQL日志,模拟慢SQL 然后查询执行计划 分组聚合 就是在

    2024年02月13日
    浏览(31)
  • Hive SQL 优化大全(参数配置、语法优化)

    服务器环境说明 机器名称 内网IP 内存 CPU 承载服务 master 192.168.10.10 8 4 NodeManager、DataNode、NameNode、JobHistoryServer、Hive、HiveServer2、MySQL slave1 192.168.10.11 8 4 NodeManager、DataNode、ResourceManager slave2 192.168.10.12 8 4 NodeManager、DataNode、SecondaryNameNode 操作系统均为: CentOS 7.5 组件版本 jdk 1

    2024年02月10日
    浏览(45)
  • 星际争霸之小霸王之小蜜蜂(十五)--剧将终场

    星际争霸之小霸王之小蜜蜂(十四)--资本家的眼泪 星际争霸之小霸王之小蜜蜂(十三)--接着奏乐接着舞 星际争霸之小霸王之小蜜蜂(十二)--猫有九条命  星际争霸之小霸王之小蜜蜂(十一)--杀杀杀  星际争霸之小霸王之小蜜蜂(十)--鼠道 星际争霸之小霸王之小蜜蜂(

    2024年02月08日
    浏览(39)
  • hive on spark hql 插入数据报错 Failed to create Spark client for Spark session Error code 30041

    离线数仓 hive on spark 模式,hive 客户端 sql 插入数据报错 Failed to execute spark task, with exception \\\'org.apache.hadoop.hive.ql.metadata.HiveException(Failed to create Spark client for Spark session 50cec71c-2636-4d99-8de2-a580ae3f1c58)\\\' FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. Failed t

    2024年02月14日
    浏览(53)
  • HIVE SQL 中 HQL 语句理解

         HQL DQL指的是 数据查询语句, 主要是对 表数据进行查询操作的. MySQL中 单表查询语句 完整格式如下:     select distinct 列1, 列2... from 表名     where 组前筛选     group by 分组字段     having 组后筛选     order by 排序字段 [asc/desc]     limit 起始索引, 数据条数; Hive中 单表

    2024年01月25日
    浏览(77)
  • 【Hive】HQL Array 『CRUD | 相关函数』

    语法: array基本数据类型 注意是 ,不是 () 例子: 创建表时: 字段填充时: cast(null as arraystring) as XXX 没有删除,只能覆盖 注意:数组越界会报错。 array() :创建一个数组。例如,array(1,2,3)将创建一个包含1、2、3三个元素的数组。 array_max(array) :返回数组中的最大值。例如,

    2024年02月11日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包