记录一次Spark小问题的求证过程

前言

某天和小伙伴讨论时候,聊到一个小问题,RDD的默认分区数和啥有关,当时得出的答案是和total-executor-cores有关,核数是几个,那它就是几个分区,经过求证似乎并不是这样,记录一下过程

正题

首先随便来了个action算子,然后点进去一探究竟

然后我们跳转到了RDD.scala,说老实的你随便来个action,点进来都是runJob,然后我们就顺其自然点进去吧

进到SparkContext.scala,然后这里4个参数分别为RDD

此时我们知道我们点进去partitions应该能得到我们想要的答案

此时我们鼠标选中getPartitions,点击IDEA的navigate,或者好像默认快捷键是F4吧,我也忘了,点出那个Type Hierarchy

我们挑了一个hadoopRDD来开刀

点进来看到返回具体分区数的方法

所以在HDFS上的数据,如果我们要加载它,数据小于128M,正常返回一个分区,如果128M<data<128M*2,返回两个分区···依次类推

这部分就是程序最初的分区情况,而且多少个分区就对应多少个task,当我们的executor-cores大于最初生成的task数,那么实际出现的task数就会按照最初的task数算,partition数量会按照最初split的操作去决定,也就是多余的cores此时会出现空转

从而证明 executor-cores和分区数毛线关系没有···

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值