博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark学习——分区Partition数
阅读量:6347 次
发布时间:2019-06-22

本文共 1050 字,大约阅读时间需要 3 分钟。

其他更多java基础文章:


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

  • :这篇通过实例非常全的测试了各种情况下的默认分区数

  • :这篇通过代码讲解了分区的逻辑、决定partition数量的因素、Partition数量影响及调整。

  • 、:通过源码讲解repartition,partitionBy,coalesce

总结

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

  • 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

你可能感兴趣的文章
docker镜像的使用方法
查看>>
提升HTTPS安全评级
查看>>
iOS开发过程中的心得
查看>>
QOS配置命令
查看>>
linux安装搭建media-wiki
查看>>
使用 MPI for Python 并行化遗传算法
查看>>
widget
查看>>
paramiko安装及使用
查看>>
Java私塾:研磨设计模式 之 访问者模式(Visitor)
查看>>
我的友情链接
查看>>
《Python网络数据采集》读书笔记(六)
查看>>
Linux必学的60个命令
查看>>
iptables 学习笔记 (上)
查看>>
Windows Server 2012 R2 Active Directory(活动目录)实验一
查看>>
1.2-HA集群配置-2
查看>>
android viewpager 无限左右滑动
查看>>
linux下SSH远程连接服务慢解决方案
查看>>
利用mic visual studio 2010 编译器执行wincap获取网络适配器的代码
查看>>
HTML
查看>>
CENTOS7下编译安装PHP-5.4以及配置phpMyAdmin
查看>>