12 2021 档案
摘要:https://zhuanlan.zhihu.com/p/131596000
阅读全文
摘要:reducebykey算子是Transformation 转换算子(虽然和groupbykey函数效果差不多,不过groupbykey是把同一个组的value放到一个compactbuffer里面去,reducebykey是将同组value聚合成一个value) reducebykey适用(k,v)
阅读全文
摘要:count算子 统计rdd中元素的个数 它是一个action算子,把每个分区的个数统计完之后用runjob发送到driver端,然后在driver端进行sum操作。 top算子是一个action算子(返回前num个数据,这是从大到小排好序的前num个) 这里要重点说明一下,你在调用top算子的时候传
阅读全文
摘要:forerach(func) 在rdd的每一条数据上运行func 和 foreachPartition(func)算子 在rdd上的每一个分区上运行func 这一点可以在下图源码上很明显的看出来,foreachpartition上一般用来建立数据库连接操作,一个分区分配一个连接比一条数据分配一个连接
阅读全文
摘要:intersection算子是得到多个RDD之间的交集的,下面来从源码上看一下具体处理。 intersection算子是交集,cogroup算子是并集,intersection不依赖k,v类型,cogroup依赖k,v类型 1. 把 多个RDD对应的数据map成(value,null)元组类型 2.
阅读全文
摘要:下面是distinct算子源码,他也是一个shuffle类算子,底层运用了reduceByKey算子 关键看这一句 对分区内数据先进行map操作,接着调用reduceByKey对同组内数据进行(x,_)=>x 函数操作。
阅读全文
摘要:groupByKey,group,reduceByKey,foldByKey,aggregateByKey 都可以算作聚合类算子。 聚合类算子,在map side端产生结果后,把结果保留在本地buffer中,如果满了或者这个节点的这次RDD任务执行完了,就会把结果刷新到磁盘上给下游的task,也就是
阅读全文
摘要:点开groupBy源码,进去看见如下图,参数是写入的函数,以及一个默认的hashpartitioner 。 这个传进去的函数,就是把传入的数据中选出一个key的这种逻辑。 再点入,以下就是详细逻辑。可以看见groupBy函数以函数的返回值作为key,他和groupByKey唯一的区别是在前面加了一部
阅读全文
摘要:先进到defaultPartitioner里,self接收得是父RDD。 这是defaultPartitioner函数: 这一段代码的主要逻辑是分区器的选取问题,是用上游RDD的分区器还是新建一个分区器。 评判标准就是: 如果现有的最大分区器是合格的,或者其分区数大于或等于默认分区数,请使用现有分区
阅读全文