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

wux_labs 2023-01-27 00:40:02

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())
...全文
134 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,794

社区成员

发帖
与我相关
我的任务
社区描述
姓什么?我姓大。 大什么?大数据。 有多大?lambda。 家族成员有哪些?Hadoop、Hive、Spark。 开发语言有什么?Java、Python、Scala。
大数据 个人社区
社区管理员
  • wux_labs
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧