Spark中的map函數(shù)是將每個rdd都進行自定義函數(shù)處理
mapPartitions則是將多個rdd進行分區(qū),對每個分區(qū)內(nèi)部的rdd進行自定義函數(shù)的處理
mapPartitions常用于需要多次加載外部文件的情況下,若此時仍然使用map函數(shù) 那么對于每條記錄都需要進行文件讀取加載,比較費時費性能
示例
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)