Spark RDD算子详细流程解析附具体执行流程图
文章平均质量分 92
详细介绍了Spark1.4.1中RDD的算子包括:action和transform,并且通过数据集流转图详细说明每个算子涉及的RDD的转化及Driver端的执行流程
亮亮-AC米兰
这个人什么都没留下
展开
-
Spark算子执行流程详解之八
36.zip将2个rdd相同位置的元素组成KV对/** * Zips this RDD with another one, returning key-value pairs with the first element in each RDD, * second element in each RDD, etc. Assumes that the two RDDs原创 2017-03-02 12:18:32 · 2357 阅读 · 0 评论 -
Spark算子执行流程详解之七
31.union将2个rdd合并在一起。def union(other: RDD[T]): RDD[T] = withScope { if (partitioner.isDefined && other.partitioner == partitioner) {//两者的分区函数相同 new PartitionerAwareUnionRDD(sc, Ar原创 2017-03-02 11:36:52 · 1214 阅读 · 0 评论 -
Spark算子执行流程详解之六
26.coalescecoalesce顾名思义为合并,就是把多个分区的RDD合并成少量分区的RDD,这样可以减少任务调度的时间,但是请记住:合并之后不能保证结果RDD中的每个分区的记录数量是均衡的,因为合并的时候并没有考虑合并前每个分区的记录数,合并只会减少RDD的分区个数,因此并不能利用它来解决数据倾斜的问题。def coalesce(numPartitions: I原创 2017-03-02 11:11:45 · 2150 阅读 · 0 评论 -
Spark算子执行流程详解之五
22.combineByKey def combineByKey[C](createCombiner:V => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C, partitioner: Partitioner, mapSideCombine: Boole原创 2017-03-02 10:42:18 · 1563 阅读 · 0 评论 -
Spark算子执行流程详解之四
17.map/** * Return a new RDD by applying a function to all elements of this RDD. */def map[U: ClassTag](f:T => U): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartit原创 2017-03-02 10:30:51 · 1591 阅读 · 0 评论 -
Spark算子执行流程详解之三
10.aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U)用与聚合RDD中的元素,先使用seqOp将RDD中每个分区中的T类型元素聚合成U类型,再使用combOp将之前每个分区聚合后的U类型聚合成U类型,特别注意seqOp和combOp都会使用zeroValue的值,zeroValue的类原创 2017-03-02 10:21:51 · 2269 阅读 · 0 评论 -
Spark算子执行流程详解之二
4.count()def count(): Long = sc.runJob(this, Utils.getIteratorSize_).sum计算数据总量,每个分区各自计算自己的总数,然后汇总到driver端,driver端再把每个分区的总数相加统计出对应rdd的数据量,其流程如下: 5.countApprox( timeou原创 2017-03-02 10:09:20 · 2572 阅读 · 0 评论 -
Spark算子执行流程详解之一
1.take(num:Int)获取前num条记录。def take(num: Int): Array[T] = withScope { if (num == 0) { new Array[T](0) } else { val buf = newArrayBuffer[T] val totalParts = this.pa原创 2017-03-02 09:55:18 · 2079 阅读 · 0 评论