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)