首页 > 其他分享 >mapPartition与map函数

mapPartition与map函数

时间:2024-02-19 16:01:46浏览次数:25  
标签:map mapPartitions 函数 val 分区 算子 mapPartition

dd的mapPartitions是map的一个变种,它们都可进行分区的并行处理。
两者的主要区别是调用的粒度不一样:map的输入变换函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区。
Map 算子是分区内一个数据一个数据的执行,类似于串行操作。而 mapPartitions 算子是以分区为单位进行批处理操作。
假设一个rdd有10个元素,分成3个分区。如果使用map方法,map中的输入函数会被调用10次;而使用mapPartitions方法的话,其输入函数会只会被调用3次,每个分区调用1次。
从功能上讲:Map 算子主要目的将数据源中的数据进行转换和改变。但是不会减少或增多数据。MapPartitions 算子需要传递一个迭代器,返回一个迭代器,没有要求的元素的个数保持不变,所以可以增加或减少数据。

从性能上讲:Map 算子因为类似于串行操作,所以性能比较低,而是 mapPartitions 算子类似于批处理,所以性能较高。但是 mapPartitions算子会长时间占用内存,那么这样会导致内存可能不够用,出现内存溢出的错误。所以在内存有限的情况下,不推荐使用。使用 map 操作。

 

例:可以求每个分区的最大值,亦或是在连接数据库操作时,可以以为分区单位进行操作

    val conf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("mapPartitions1")
    val sc = new SparkContext(conf)
    val file: RDD[Int] =sc.makeRDD(List(1,2,9,11,3,9,4,22,11),2)

    val result: RDD[Int] = file.mapPartitions(s => {

      Array(s.max).iterator

    })
    result.foreach(println)
    sc.stop()

 

标签:map,mapPartitions,函数,val,分区,算子,mapPartition
From: https://www.cnblogs.com/huifeidezhuzai/p/18021320

相关文章

  • ts函数04
    正常的函数//函数声明functionadd(a,b){returna+b}//函数表达式,匿名函数letadd2=function(a,b){returna+b}在ts中//TSfunctionadd3(a:number,b:number):number{//a,b都是number的类型,:number表示返回值为number  returna+b}......
  • 03 进阶篇-高阶数据类型BitMaps、HyperLogLogs
    BitMaps介绍BitMaps的基本概念,它是一种通过位来表示数据的方法,能高效地处理大量布尔值。展示BitMaps在用户在线状态、统计等方面的应用示例。介绍相关的命令,如SETBIT,GETBIT,BITCOUNT,BITOP等。BitMaps的基本概念BitMaps,或称为位图,是Redis中用于高效处理大量布尔值的......
  • 初等函数微分和积分公式
         ......
  • 比较厉害的积性函数求和
    听zak讲的,感觉很厉害。给定一个积性函数\(S\),可以快速计算\(S(p^k)\),求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^mS(ij)\)。把\(n,m\)当作同阶。我们考虑枚举\(i,j\)的\(\gcd\)。\(\sum\limits_{g=1}^{\min(n,m)}\sum\limits_{i=1}^{n/g}\sum\limits_{j=1}^{m/g}S......
  • 2 分钟,了解 4 个极为有用的 MetricsQL 函数
    夜莺社区的朋友如果问时序库的选型,我一般都会推荐VictoriaMetrics,除了其性能、稳定性、集群扩展能力之外,VictoriaMetrics还扩展了PromQL,提供了MetricsQL,即增强了PromQL的能力。比如下面介绍的场景,就很适合用MetricsQL来解决。需求某个指标(假设指标名字是interface_sta......
  • nativeUI页面table列表显示,render渲染函数
    {key:'type',title:$t('cmdType'),width:150,align:'center',render(t){switch(t.type){case2:returnh('span',{......
  • python函数传参
    python函数传参参考:python函数参数传递(params,*params,**params)位置参数常见的函数参数:defadd_both(x,y):returnx+y默认参数defenroll(name,gender,age=6,city='Beijing'):print('name:',name)print('gender:',gender)print(&......
  • 2024-02-18-物联网C语言(7-字符串处理函数)
    7.字符串7.1获取字符串的长度函数-strlen头文件:#include<string.h>函数定义:size_tstrlen(constchar*s)参数:s-指定的字符串返回值:当前字符串的长度#include<stdio.h>#include<string.h>intmain(intargc,charconst*argv[]){//使用strlen获取字符......
  • 请编写函数fun,它的功能是:求出1到100之内能被7或者11整除, 但不能同时被7和11整除的所有
    /2.请编写函数fun,它的功能是:求出1到100之内能被7或者11整除,但不能同时被7和11整除的所有整数,并将他们放在a所指的数组中,通过n返回这些数的个数/#include<stdio.h>#include<string.h>intfun(int*buf){inti=1,j=0;for(i=1;i<100;i++){if(i%7==......
  • 1.m个人的成绩存放在score数组中,请编写函数fun, 它的功能是:将低于平均分的人数作为函
    /1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指1定的数组中。/#include<stdio.h>#include<string.h>intfun(int*buf,int*buff,intnum){inti=0,j=0,sum=0;for(i=......