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))]