PySpark实战:fullOuterJoin操作
来自CloudWiki
介绍
fullOuterJoin操作是一个变换算子,调用形式为rdd.fullOuterJoin(otherRDD,numPartitions=None),它返回此RDD和另一个oherRDD的全外部连接(full outer join)。
对于RDD自身中的每个元素(k,v) ,如果另外一个otherRDD匹配到k ,那么生成的RDD元素格式为(k,(v,w)),如果另外一个otherRDD匹配不到k,则生成的RDD元素格式为(k,(v,None))
如果另外一个otherRDD匹配k,但是在RDD自身没有匹配到值w ,则返回None. 则生成的RDD元素格式为(k,(None,w))
代码
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.fullOuterJoin(y) # [('b', (4, None)), ('c', (None, 8)), ('a', (1, 2))] print(rdd.collect()) ############################################## sc.stop()
输出
[('b', (4, None)), ('c', (None, 8)), ('a', (1, 2))]