spark创建RDD的分区策略

1.集合数据是如何分区的

       0 until 3 是从0到3并不包含3
       List(1,2,3,4,5) 长度为5 分区数量为3
       (1).partitions方法 参数为  数组长度 分区数量
       (2).迭代是0 until 3 即0,1,2
       (3).将0,1,2变成tuple(start,end)
           a. start= (i*数组长度)/分区数量
           b. end=((i+1)*数组长度)/分区数量
       (4).slice(from,until)从from开始  until结束(不包含)  注意:slice是数组下标

2.文件读取之后文件的分区规则 textfile  

      (1).默认最小分区为2  math.min(defaultParallelism,2)
      (2).如果不想用默认分区数量,可以通过 textfile 的第二个参数指定分区数
      (3).分区数量的计算方式:
           totalSize = 7  总字节数
           goalSize = 7 / 2 = 3 byte 三个字节一个分区

           7 / 3=2....1 ( 1/3 > 1.1%所以要再进行分区)  总共分三个分区。

3.数据在分区中存放的位置


    a.spark读取文件,底层其实使用的就是Hadoop的读取方式,所以是一行一行读取,和字节数没有关系
    b.数据读取时以偏移量为单位
    c.数据分区的偏移量范围的计算{字节数除以分区数商就是每个分区的偏移量数}

      (1).偏移量
          1234567@@=>012345678
          89@@=>9 10 11 12
          0=> 13
      (2).偏移量的范围
      [0,7]=>1234567
      [7,14]=>890

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值