K-V型RDD的算子-join算子

wux_labs wux_labs 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

join算子是对两个K-V型RDD按照K值做连接操作,生成一个新的K-V型RDD。新RDD中仅包含两个源RDD中同时存在的K,新RDD中的V是由两个源RDD的V组成的二元组。join算子的定义如下:

def join(
    self: "RDD[Tuple[K, V]]",
    other: "RDD[Tuple[K, U]]",
    numPartitions: Optional[int] = None,
) -> "RDD[Tuple[K, Tuple[V, U]]]"

案例:

rdd1 = sc.parallelize(["Hello Python", "Hello Spark You", "Hello Python Spark", "You know PySpark"])
# 从RDD1中筛选包含单词Spark的元素构造一个K-V型RDD:(单词, 词频)
rdd2 = rdd1.filter(lambda x: "Spark" in x.split(" ")).flatMap(lambda x: x.split(" ")).map(lambda x: (x, 1)).reduceByKey(lambda a, b: a + b)
# 从RDD1中筛选不含单词Spark的元素构造一个K-V型RDD:(单词, 单词长度)
rdd3 = rdd1.filter(lambda x: "Spark" not in x.split(" ")).flatMap(lambda x: x.split(" ")).map(lambda x: (x, len(x))).reduceByKey(lambda a, b: a)

rdd4 = rdd2.join(rdd3)

print("RDD2的数据是:", rdd2.collect())
print("RDD3的数据是:", rdd3.collect())
print("RDD4的数据是:", rdd4.collect())
...全文
评论
收藏 已收藏
分享
返回顶部