当Hive输入由很多个小文件组成,由于每个小文件都会启动一个map任务,如果文件过小,以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费,甚至OOM。
为此,当我们启动一个任务,发现输入数据量小但任务数量多时,需要注意在Map前端进行输入合并
当然,在我们向一个表写数据时,也需要注意输出文件大小
1. Map输入合并小文件
对应参数:
set mapred.max.split.size=256000000; #每个Map最大输入大小
set mapred.min.split.size.per.node=100000000; #一个节点上split的至少的大小
set mapred.min.split.size.per.rack=100000000; #一个交换机下split的至少的大小
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; #执行Map前进行小文件合并
在开启了org.apache.hadoop.hive.ql.io.CombineHiveInputFormat后,一个data node节点上多个小文件会进行合并,合并文件数由mapred.max.split.size限制的大小决定。
mapred.min.split.size.per.node决定了多个data node上的文件是否需要合并~
mapred.min.split.size.per.rack决定了多个交换机上的文件是否需要合并~
2.输出合并
set hive.merge.mapfiles = true #在Map-only的任务结束时合并小文件
set hive.merge.mapredfiles = true #在Map-Reduce的任务结束时合并小文件
set hive.merge.size.per.task = 256*1000*1000 #合并文件的大小
set hive.merge.smallfiles.avgsize=16000000 #当输出文件的平均大小小于该值时,启动一个独立的map-reduce任务进行文件merge
Reference:
Hive AdminManual
本文转自:http://blog.csdn.net/yfkiss/article/details/8590486
相关推荐
Hive内部表合并小文件Java程序
小文件合并代码,
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。
通过指定目录进行多线程执行合并小文件程序,由于hdfs小文件过多,可用于自定义合并orc小文件。
Hive中进行统计,计算的时候,会产生很多个map,影响计算的速度 方法一:通过spark的coalesce()方法和repartition()方法 val rdd2 = rdd1.coalesce(8, true) (true表示是否shuffle) val rdd3 = rdd1.repartition(8...
1. HIVE结构 6 1.1 HIVE架构 6 1.2 Hive 和 Hadoop 关系 7 1.3 Hive 和普通关系数据库的异同 8 1.4 HIVE元数据库 9 1.4.1 DERBY 9 1.4.2 Mysql 10 ...9.9 合并小文件 62 9.10 Group By 62 10. HIVE FAQ: 62
Hive用户指南 目录 1. HIVE结构 6 1.1 HIVE架构 6 1.2 Hive 和 Hadoop 关系 7 1.3 Hive 和普通关系数据库的异同 8 1.4 HIVE元数据库 9 1.4.1 DERBY 9 ...9.9 合并小文件 62 9.10 Group By 62 10. HIVE FAQ: 62
impala和hive中小文件合并问题解决
先执行temp.exe将runonce1.hive加到exemade.exe的尾部,这样就做好了一个需要合并的exe.再次执行exemade.exe就可以释放出来hive文件了。 注意:这3个文件需要放在同一个文件夹下。 密码:L01_ujs
iceberg小文件合并代码
在与csv文件夹相同的文件夹中生成.hive文件,并使用所有合并文件生成run.sh。 因此,只需切换到.hive脚本所在的文件夹并运行run.sh(./run.sh)。 该工具还将在.hive和run.sh脚本上设置执行权限,以便您可以直接执行...
数据转换语句:可以通过Hive SQL进行数据转换,例如数据清洗、转换、合并等操作。 数据导出语句:可以将Hive表中的数据导出到本地文件系统或HDFS中。 总体而言,Hive SQL是面向数据仓库的一种数据操作语言,它使用...
HiveTask执行SQL及合并小文件工具使用说明
通过一定的java程序设计做数据解析、结构化、各自合并成一个文件即可方便load到hive中。 输出:(两张表,一个用户表,一个评论内容表) 将两个类别下各自对应的文件集,进行解析、结构化。 通过load语法,将数据...
特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但不限于使用,复制,修改,合并的权利,发布,分发,再许可和/或出售本软件的副本,并允许具备软件的人员这样做,但须...
hive-tools 项目介绍 在网易集团内部有大大小小几百套 hive 集群,为了满足网易猛犸大数据平台的元数据统一管理的需求,我们需要将多个分别独立的 hive 集群的元数据信息进行合并,但是不需要移动 HDFS 中的数据文件...
Hadoop大数据常见问题及处理方法,使用 hive 自带的 concatenate 命令,自动合并小文件
技术点66 优化Hive 合并 10.2.4 分组、排序和explain 10.3 本章小结 11 Pig 流管道 11.1 Pig 基础 11.1.1 安装 11.1.2 架构 11.1.3 PigLatin. 11.1.4 数据类型 11.1.5 操作符和函数 ...
1. 到文件下初始化 2. 添加文件hive复习.md 3. 合并添加和提交,以及注释 4. 查看日志 2. 合并分支(把“目标分支”合并到“当前分支”)she
10.2.1 序列化和反序列化技术点64 载入日志文件10.2.2 UDF、分区、分桶和压缩技术点65 编写UDF 和压缩分区表10.2.3 数据合并技术点66 优化Hive 合并10.2.4 分组、排序和explain 10.3 本章小结11 ...