PySpark实战:leftOuterJoin与rightOuterJoin操作
来自CloudWiki
介绍
leftOuterJoin操作是一个变换算子,
调用形式为rdd.leftOuterJoin(otherRDD,numPartitions=None),它返回此RDD和另一个otherRDD的左外部连接(left outer join)
对于RDD自身中的每个元素(k,v) ,如果另外一个otherRDD匹配到k ,那么生成的RDD元素格式为(k,(v,w)),如果另外一个otherRDD匹配不到k,则生成的RDD元素格式为(k,(v,None))
代码
import findspark findspark.init() ############################################## from pyspark.sql import SparkSession spark = SparkSession.builder \ .master("local[1]") \ .appName("RDD Demo") \ .getOrCreate(); sc = spark.sparkContext ############################################# x = sc.parallelize([("a", 1), ("b", 4)]) y = sc.parallelize([("a", 2), ("c", 8)]) rdd = x.leftOuterJoin(y) #[('b', (4, None)), ('a', (1, 2))] print(rdd.collect()) rdd = x.rightOuterJoin(y) #[('c', (None, 8)), ('a', (1, 2))] print(rdd.collect()) ############################################## sc.stop()
输出
[('b', (4, None)), ('a', (1, 2))]
[('c', (None, 8)), ('a', (1, 2))]