![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
spark
文章平均质量分 78
spark
zuiziyoudexiao
真正的自由不是随心所欲,而是自我主宰,若求随心所欲,则必随波逐流。
展开
-
map算子源码分析
map算子源码解析map算子可以对rdd中的元素进行一对一的映射。如下表示将rdd每个元素乘以2,并且map之后新的rdd分区数不会改变。val rdd1 = sc.parallelize(List(1,2,3,4,5))rdd1.map(a=>a*2).collect().foreach(println(_))现在分析一下map算子的底层实现def map[U: ClassTag](f: T => U): RDD[U] = withScope { val cleanF原创 2021-03-07 14:23:53 · 238 阅读 · 0 评论 -
rdd创建源码分析
parallelize方法源码分析parallelize用于通过本地集合创建rddval rdd1 = sc.parallelize(List(1,2,3,4,5,6))现在研究一下,这个方法底层都做了什么事情通过ctrl+b点进入,底层方法如下,可以发现它设置了一个默认参数numslices=defaultParallelism表示分区数量,以及新建了一个ParallelCollectionRDD实例对象。def parallelize[T: ClassTag]( seq:原创 2021-03-07 14:20:59 · 362 阅读 · 0 评论 -
spark提交job源码分析
collect()算子源码分析对于任何行动算子都会触发sparkjob的提交,查看collect()算子源码*sc.runJob(this, (iter: Iterator[T]) => iter.toArray) //传入了一个函数f,它将每个分区迭代器转换为数组 *runJob(rdd, func, 0 until rdd.partitions.length) //多传入了一个0---分区长度的range集合 *val cleanedFunc = clean(func)原创 2021-03-07 14:08:37 · 134 阅读 · 0 评论