RDD的分区操作算子-mapPartitions算子

wux_labs 2023-01-28 18:19:36

mapPartitions算子与map算子类似,调用一个指定的函数对RDD中的元素进行处理,生成一个新的RDD。与map算子不同的是,map算子的函数每次处理一个元素,RDD中有多少个元素,函数就会被调用多少次,而mapPartitions算子每次处理RDD的一个分区,RDD有多少个分区,函数就会被调用多少次。mapPartitions算子的定义如下:

def mapPartitions(
self: "RDD[T]",
f: Callable[[Iterable[T]], Iterable[U]],
preservesPartitioning: bool = False
) -> "RDD[U]"

案例:

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

print("map处理的类型:", rdd1.map(lambda x: type(x)).collect())
print("mapPartitions处理的类型:", rdd1.mapPartitions(lambda x: [type(x)]).collect())

print("map转换的结果:", rdd1.map(lambda x: (x, len(x))).collect())
print("mapPartitions转换的结果:", rdd1.mapPartitions(lambda x: [(x1, len(x1)) for x1 in list(x)]).collect())
...全文
297 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,750

社区成员

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

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