Spark中map和mapPartitions的区别?
Spark中map和mapPartitions的区别?
[TOC]
相同点
- 二者都是 转换(Transformation)算子
区别
- 本质
- map是对 RDD 中的每一个元素进行操作
- mapPartitions 则是对 RDD 中的每个分区的迭代器进行操作
- RDD中的每个分区数据量不大的情况
- map 操作性能低下。eg:一个partition中有1万条数据,那么在分析每个分区时,function要执行和计算1万次
- mapPartitions性能较高。eg:使用 mapPartitions操作之后,一个 task 仅仅会执行一次function,function 一次接受所有的 Partition 数据。只要执行一次就 OK 了,比较高。
- RDD 中的每个分区数据量超大的情况
- map都能正常执行结束
- mapPartitions 一次传入一个 function 后,可能一下内存不够用,造成 OOM(内存溢出)
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!