leftOuterJoin是Tranformation,具有shuffle
相当于左外连接,不管左表的key对应右表有没有,都会显示value,如果右表有就显示Some,没有就None
左表没有右表的key,那么右表的key就不显示
左表不管有没有与右表相同的key,左表都全部显示
看源码:
二个rdd的分区器为默认分区器,由Hashpartitioner,取二个rdd的最大分区为合并后rdd的分区
可以看到leftOuterJoin和join的差别不大就是多了个判断.也是有cogroup形成value对偶元组,然后flatMapValues压平取出
上代码实现
object LeftJoin { def main(args: Array[String]): Unit = { val conf = new SparkConf().setAppName("aggregateByKey").setMaster("local[*]") val sc = new SparkContext(conf) val rdd1 = sc.parallelize(List(("tom", 1), ("jerry