hive 的一些参数整理

本文详细介绍了Hive中与MapReduce任务相关的参数,如mapreduce.input.fileinputformat.split.minsize和mapreduce.input.fileinputformat.split.maxsize,以及如何划分split。此外,还讲解了Hive合并小文件的参数,如hive.merge.mapFiles和hive.merge.size.per.task,以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mapreduce 参数:

return Math.max(minSize, Math.min(maxSize, blockSize));

mapreduce.input.fileinputformat.split.minsize (default 0)
mapred.min.split.size
The minimum size chunk that map input should be split into. Note that some file formats may have minimum split sizes that take priority over this setting.

mapreduce.input.fileinputformat.split.maxsize
mapred.max.split.size(旧版)
启动map最大的split size大小
每个split的最大值,如果设置了mapreduce.input.fileinputformat.split.maxsize,则为该值,否则为Long的最大值。(如果不设置,合并小文件时,所有小文件会合并成一个文件)

mapreduce.input.fileinputformat.split.minsize.per.node
mapred.min.split.size.per.node(旧版)
mapreduce.input.fileinputformat.split.minsize.per.rack
mapred.min.split.size.per.rack(旧版)
划分split
划分的逻辑如下:

1) 遍历输入目录中的每个文件,拿到该文件
2)计算文件长度,A:如果文件长度为0,如果mapred.split.zero.file.skip=true,则不划分split ; 如果mapred.split.zero.file.skip为false,生成一个length=0的split .B:如果长度不为0,跳到步骤3
3)判断该文件是否支持split :如果支持,跳到步骤4;如果不支持,该文件不切分,生成1个split,split的length等于文件长度。
4)根据当前文件,计算splitSize,本文中为100M
5 ) 判断剩余待切分文件大小/splitsize是否大于SPLIT_SLOP(该值为1.1,代码中写死了) 如果true,切分成一个split,待切分文件大小更新为当前值-splitsize ,再次切分。生成的split的length等于splitsize; 如果false 将剩余的切到一个split里,生成的split length等于剩余待切分的文件大小。之所以需要判断剩余待切分文件大小/splitsize,主要是为了避免过多的小的split。比如文件中有100个109M大小的文件,如果splitSize=100M,如果不判断剩余待切分文件大小/splitsize,将会生成200个split,其中100个split的size为100M,而其中100个只有9M,存在100个过小的split。MapReduce首选的是处理大文件,过多的小split会影响性能。

hive 合并小文件参数:

set hive.merge.mapFiles=true; (default true)

set hive.merge.mapredFiles=true;(default false)

set hive.merge.size.per.task=268435456;
Size of merged files at the end of the job.

set hive.merge.smallfiles.avgsize=167772160;
When the average output file size of a job is less than this number, Hive will start an additional map-reduce job to merge the output files into bigger files. This is only done for map-only jobs if hive.merge.mapfiles is true, and for map-reduce jobs if hive.merge.mapredfiles is true.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值