2019独角兽企业重金招聘Python工程师标准>>>
我们知道RDD就是一个不可变的带分区的记录集合,Spark提供了RDD上的两类操作,转换和动作。转换是用来定义一个新的RDD,包括map, flatMap, filter, union, sample, join, groupByKey, cogroup, ReduceByKey, cros, sortByKey, mapValues等,动作是返回一个结果,包括collect, reduce, count, save, lookupKey。
首先要注意一点,就是分区,那么:
- 如果一个RDD的依赖的每个分区只依赖另一个RDD的同一个分区,就是narow,如图上的C和D,D和F,B和G,这样就不需要进行shuffle,同时还可以按照流水线的方式,把一个分区上的多个操作放在一个Task里进行,如图上覆盖C,D,F的红色阴影。
- 如果一个RDD的每个分区需要依赖另一个RDD的所有分区,就是wide,如图上的A和B,F和G,这样的依赖需要进行shuffle,需要更多的运算。
作者:用心阁
链接:https://www.zhihu.com/question/37137360/answer/70608128
来源:知乎
著作权归作者所有,转载请联系作者获得授权。