mapPartitions 使用

Spark中的map函数是将每个rdd都进行自定义函数处理
mapPartitions则是将多个rdd进行分区,对每个分区内部的rdd进行自定义函数的处理

mapPartitions常用于需要多次加载外部文件的情况下,若此时仍然使用map函数 那么对于每条记录都需要进行文件读取加载,比较费时费性能

示例

from pyspark.sql import SparkSession
from pyspark import SparkConf,SparkContext

def map_func(row):
    print ("====")
    re = row*2
    return re

def mapPartition_func(part):
    print ("====")
    for row in part:
        re = row*2
        yield re
    return re

conf = SparkConf().setAppName("test")
sc = SparkContext(conf=conf)

a = sc.parallelize([1,2,3,4,5],5)
re = a.map(map_func)
for line in re.collect():
    print (line)

re = a.mapPartitions(mapPartition_func)
for line in re.collect():
    print (line)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容