开发者社区> 问答> 正文

spark中map和mapPartition的区别是什么?

spark中map和mapPartition的区别是什么?

展开
收起
芯在这 2021-12-06 01:16:06 657 0
1 条回答
写回答
取消 提交回答
  • rdd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。

    两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。

    假设一个rdd有10个元素,分成3个分区。如果使用map方法,map中的输入函数会被调用10次;而使用mapPartitions方法的话,其输入函数会只会被调用3次,每个分区调用1次。

    这两个方法的另一个区别是在大数据集情况下的资源初始化开销和批处理处理,如果在map和mapPartition中都要初始化一个耗时的资源,然后使用,比如数据库连接。在上面的例子中,mapPartition只需初始化3个资源(3个分区每个1次),而map要初始化10次(10个元素每个1次),显然在大数据集情况下(数据集中元素个数远大于分区数),mapPartitons的开销要小很多,也便于进行批处理操作。

    mapPartitionsWithIndex和mapPartitons类似,只是其参数多了个分区索引号。

    2021-12-06 01:16:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Hybrid Cloud and Apache Spark 立即下载
Scalable Deep Learning on Spark 立即下载
Comparison of Spark SQL with Hive 立即下载