spark源码分析之Partitioner
2018-02-27 14:56
190 查看
一、源码下载以及安装阅读
这部分可以看我写的第一个源码分析的开始,有说明,比较简单,附上链接http://blog.csdn.net/flyinthesky111/article/details/79379309
二、源码分析
打开org.apache.spark.Partitioner.scala文件
整体结构上看,Partitioner有两个子类,分别是HashPartitioner和RangePartitioner
老规矩,看一下作者的注释,搞清楚Partitioner的主要作用
An object that defines how the elements in a key-value pair RDD are partitioned by key.
Maps each key to a partition ID, from 0 to
即Partitioner是如何对K-V键值对的RDD进行以K分区的规则对象
然后不啦不啦又是一大堆的注释,那些话主要意思就是告诉我们,如果所有的RDD已经有了一个分区器,就会选择 这一个,我们没有在spark程序中自己定义分区规则,系统就会采用默认的HashPartitioner分区器。
嗯,下面源码,第一个defaultPartitioner,看名字就知道,这是系统默认的分区器,这个分区器内部最终还是调用的HashPartitioner的分区规则,只不过他会先行判断。
HashPartitioner分区器
先获取到分区数量,进行判断后,就会调用工具类中的nonNegativeMod方法传入(key.hashCode, numPartitions)按照规则进行分区,有兴趣的可以点进去看一下分区具体实现,在生产环境中我们经常会根据不同情况重写分区规则
RangePartitioner
这个比较复杂,单拉一篇出来看一下
这部分可以看我写的第一个源码分析的开始,有说明,比较简单,附上链接http://blog.csdn.net/flyinthesky111/article/details/79379309
二、源码分析
打开org.apache.spark.Partitioner.scala文件
整体结构上看,Partitioner有两个子类,分别是HashPartitioner和RangePartitioner
老规矩,看一下作者的注释,搞清楚Partitioner的主要作用
An object that defines how the elements in a key-value pair RDD are partitioned by key.
Maps each key to a partition ID, from 0 to
numPartitions - 1.
即Partitioner是如何对K-V键值对的RDD进行以K分区的规则对象
然后不啦不啦又是一大堆的注释,那些话主要意思就是告诉我们,如果所有的RDD已经有了一个分区器,就会选择 这一个,我们没有在spark程序中自己定义分区规则,系统就会采用默认的HashPartitioner分区器。
嗯,下面源码,第一个defaultPartitioner,看名字就知道,这是系统默认的分区器,这个分区器内部最终还是调用的HashPartitioner的分区规则,只不过他会先行判断。
HashPartitioner分区器
先获取到分区数量,进行判断后,就会调用工具类中的nonNegativeMod方法传入(key.hashCode, numPartitions)按照规则进行分区,有兴趣的可以点进去看一下分区具体实现,在生产环境中我们经常会根据不同情况重写分区规则
RangePartitioner
这个比较复杂,单拉一篇出来看一下
相关文章推荐
- 结合源码分析Spark中的Accuracy(准确率), Precision(精确率), 和F1-Measure
- Apache Spark源码走读之6 -- 存储子系统分析
- spark源码学习(三):job的提交以及runJob函数的分析
- sparkstreaming源码分析
- Spark技术内幕:Stage划分及提交源码分析
- Spark集群启动之Master、Worker启动流程源码分析
- Spark中决策树源码分析
- spark-shuffle-源码分析
- (版本定制)第5课:基于案例分析Spark Streaming流计算框架的运行源码
- spark 1.6.0 core源码分析4 worker启动流程
- Spark2.2 DAGScheduler源码分析[stage划分算法源码剖析]
- spark streaming源码分析4 DStream相关API
- Spark源码分析-master启动
- 第二篇:Spark SQL Catalyst源码分析之SqlParser
- 第9节:从spark源码角度分析scala面向对象思想
- Spark技术内幕:Stage划分及提交源码分析
- 结合源码分析Spark中的Accuracy(准确率), Precision(精确率), 和F1-Measure
- Spark1.6.3 Driver端 task调度源码分析
- SparkStreaming的WordCount示例及源码分析(一)
- spark源码分析之sparkcontext原理篇