mapPartitions 的优点
map 会对每个元素调用一次处理函数,而 mapPartitions 每个分区仅调用一次函数,大幅减少函数调用次数,适合处理逻辑简单但数据量极大的场景。
mapPartitions 的缺点
- 必须将整个分区的数据加载到内存中处理,如果分区数据量过大(如未合理设置 spark.default.parallelism),可能导致 OOM(内存溢出)。
- 若分区数据分布不均,处理时间会被最慢的分区拖长。
map 会对每个元素调用一次处理函数,而 mapPartitions 每个分区仅调用一次函数,大幅减少函数调用次数,适合处理逻辑简单但数据量极大的场景。