Spark学习——分区Partition数

其他更多java基础文章:
java基础学习(目录)


这部分能力有限,所以推荐一些大神文章阅读学习:

总结

我在以我的理解简单的概括下,如有不对,希望大家及时斧正:

  • Task和Partition是一一对应的
  • 通过spark.default.parallelism设置sc.defaultParallelism的值
  • sc.defaultMinPartitions=min(sc.defaultParallelism,2)。也就是sc.defaultMinPartitions只有两个值1和2,当sc.defaultParallelism>1时值为2,当sc.defaultParallelism=1时,值为1
  • sc.parallelize(…)的默认Partition值是sc.defaultParallelism的值
  • sc.textFile(…)如果不传Partition值,绝大多数则为HDFS中Block的数量。原因是partition = max(hdfs文件的block数目, sc.defaultMinPartitions),由于sc.defaultMinPartitions只能是1或2。
    • 如果hdfs文件block数量大于1时,Partition数目就是block数目。
    • 如果hdfs文件block数量等于1时,默认分区数为sc.defaultMinPartitions,只可能是1或2。当用参数指定分区数时,rdd的分区数大于等于参数值,本次测试为等于参数值或参数值+1
  • 本地文件也会像hdfs一样进行类似于block的划分,固定按32M来分片。分区数 = max(本地文件的block数目, 参数值)
  • 关系型数据库表读取的df的分区数为1
  • 读取hive表创建的DataFrame的分区数,block数为hive表对应的hdfs文件的block的数目,当sc.defaultParallelism大于block时,df的分区是等于sc.defaultParallelism,当小于block时,df的分区数介于sc.defaultParallelism和block之间

转载于:https://juejin.im/post/5ca45510f265da30cd184d41

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值