textFile分区数计算

  • 1.如果不指定默认分区数量,则默认分区数为2。计算规则是:

所有文件字节大小totalSize除以默认分区数的值goalSize,然后比较goalSize和hdfs指定分块大小作比较,以较小的最为goalSize作为切分大小,对每个文件进行切分,若文件大于大于goalSize,则会生成该文件大小/goalSize + 1个分区。

  • 2.如果textFile指定分区数量为0或者1的话,defaultMinPartitions值为1,则有多少个文件,就会有多少个分区。

  • 3.如果指定分区数量大于等于2,则默认分区数量为指定值,生成分区数量规则同2中的规则。

思考一下,为什么要这样子分区呢?

可能有的文件很小,有的文件很大,这样处理的话,能尽量使每个分区中的文件大小均匀一点,这样每个task就均匀一点。

例子:

4个文件长度分别为100 100 100 1400字节,默认最小分区为2
首先计算全部文件总长度totalSize=100+100+100+1400=1700B
goalSize=totalSize/最小分区数即2 =850B
blockSize=128M换算成字节为134217728B
minSize=1B
goalSize与blockSize取最小 值为850
850 与minSize取最大 值为850
即splitSize为850
然后 每个文件长度除以850 判断是否大于1.1
文件1,2,3都是100所以各生成1个分区,
文件4位1400,除以850>1.1 切分一个分区,剩余
(1400-850)/850 >1.1不再成立 又生成一个分区.
所以举例中的四个文件 共生成5个分区

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值