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

wux_labs 2023-01-27 00:42:01

partitionBy算子是对K-V型RDD中的所有元素调用一个函数对K值进行处理,根据函数的返回值对RDD进行重新分区,生成一个新的K-V型RDD。partitionBy算子的定义如下:

def partitionBy(
    self: "RDD[Tuple[K, V]]",
    numPartitions: Optional[int],
    partitionFunc: Callable[[K], int] = portable_hash,
) -> "RDD[Tuple[K, V]]"

案例:

def func(key):
    if "Spark" in key.split(" "):
        return 0
    if "Python" in key.split(" "):
        return 1
    return 5

rdd1 = sc.parallelize(["Hello Python", "Hello Spark You", "Hello Python Spark", "You know PySpark"])
rdd2 = rdd1.zipWithIndex()

print("RDD2的分区情况是:", rdd2.glom().collect())
rdd3 = rdd2.partitionBy(3, func)
print("RDD3的分区情况是:", rdd3.glom().collect())
...全文
262 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,750

社区成员

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

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