value类型的算子
处理数据类型为value型的算子(也就是这个算子只处理数据类型为value的数据),可以根据rdd的输入分区与输出分区的关系分为以下几个类型
(1)输入分区与输出分区一对一型
map型:对rdd的每个数据项,通过用户自定义的函数映射转换成一个新的rdd
上面4个方框表示4个rdd分区,当第一个方框中的rdd经过用户自定义的map函数从v1映射为v,1.这种操作只有等到action算子触发后,这个函数才会和其他的函数在一个stage中对数据进行运算

flagMap型:将原来的rdd通过用户自定义的函数,转化为一个新的rdd,然后再将每个新生成rdd中集合的每个元素合并成一个集合

 外部的大方框可以看做是一个rdd的分区,里面的小方框看做是rdd中的集合,小方框中的集合作为rdd的一个数据项,通过用户自定义的函数进行拆散,然后在对每个集合中的元素合并成一个集合
mapPartition型:通过这个函数可以每个分区的迭代器,这个迭代器可以可以对分区中的每个集合进行操作

 上图中的每一个方框代表一个rdd分区,这个分区通过用户自定义的函数对每个分区中的数据项进行过滤,将过滤后的数据转换为一个新的rdd
glom:是将rdd中的数据项转换为一个数组

 
(2)输入分区与输出分区为多对一型
union型:在使用union函数的时候要保证要合并的两个rdd数据类型保证一致,并且返回rdd的数据类型和被合并的rdd类型一致,在union的时候数据数据是不去重的,所有的元素都会保留,如果想去重可以使用distinct()函数

 cartesian型:就是对两个rdd对笛卡尔积操作

 
(3)输入分区与输出分区为多对多型
groupby型:将元素通过函数生成对应的key,然后再对key进行分组(将相同的key分为一组),groupbykey(key)对key进行分组,其中key就决定了分区的个数和分区的函数,和并行化的个数
(4)输出分区为输入分区的子集型
filter型:filter的功能是对rdd中的元素进行过滤,每个元素都应用于用户自定义的函数,返回值为true得以保留,false则会过滤掉
distinct型:对rdd中相同的元素进行去重
subtract型:subtract是对rdd进行减操作,比如过滤rdd1和rdd2 中有交集的元素

 sample型:sample会对rdd的所有元素进行采样,获取元素的子集。用户可以设置是否有放回的抽样,百分比,随机种子,从而决定采样的方式

 上图每一个方框是一个rdd分区,对rdd元素进行50%的采样。

 takeSample型:takeSample采样不是通过相对的比例采样,而是通过设定的个数进行采样,采样返回的结果也不是rdd,而是对采样后的数据进行collect(),返回的结果集合是单击的数组。

 
(5)还有一种输入分区与输出分区一对一型:cache型,cache分区对rdd的分区进行缓存
 cache型:cache就是将磁盘上的数据加载到内存里,相当于presiste(momory_only)函数功能

 presiste型:presiste会将数据缓存操作,至于缓存到哪里由storageLevel的枚举值来确定:
storageLevel:MEMONRY(内存),DIS(磁盘),SER(该数据是否要序列化存储)
  1. persist(newLevel:StorageLevel) //可你缓存的模式

(一)spark算子 分为3大类的更多相关文章

  1. (三)spark算子 分为3大类

    ation算子通过sparkContext执行提交作业的runJob,触发rdd的DAG执行 (foreach) foreach(f) 会对rdd中的每个函数进行f操作,下面的f操作就是打印输出没有元 ...

  2. (二)spark算子 分为3大类

     transgormation的算子对key-value类型的数据有三种: (1)输入 与 输出为一对一关系 mapValue();针对key-value类型的数据并只对其中的value进行操作,不对 ...

  3. dll的加载方式主要分为两大类,显式和隐式链接

    之前简单写过如何创建lib和dll文件及简单的使用(http://blog.csdn.net/betabin/article/details/7239200).现在先再深入点写写dll的加载方式. d ...

  4. CSS的选择器分为两大类

    CSS的选择器分为两大类:基本选择题和扩展选择器. 基本选择器: 标签选择器:针对一类标签 ID选择器:针对某一个特定的标签使用 类选择器:针对你想要的所有标签使用 通用选择器(通配符):针对所有的标 ...

  5. 03 Java的数据类型分为两大类 类型转换 八大基本类型

    数据类型 强类型语言:要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用 Java的数据类型分为两大类 基本类型(primitive type) 数值类型 整数类型 byte占1个字节范围: ...

  6. java的数据类型分为两大类

    java的数据类型分为两大类 基本类型(primitive type) 数据类型 整数类型 byte占一个字节范围:-128-127 short占两个字节范围:-32768-32767 int占四个字 ...

  7. C#的设计模式分为3大类23种

    创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method ...

  8. hook 9大类

    HOOK技术主要分为两大类,一是内核层HOOK,一是用户层HOOK. 用户层HOOK也就是在ring3环境下hook kenerl32.dll.User3.dll.Gui32.dll.Advapi.d ...

  9. 【Java知识点专项练习】之 数据类型两大类

    Java的数据类型分为两大类:基本类型和引用类型: 基本类型只能保存一些常量数据,引用类型除了可以保存数据,还能提供操作这些数据的功能: 为了操作基本类型的数据,java也对它们进行了封装, 得到八个 ...

随机推荐

  1. HDU 1847 【巴什博弈】

    Good Luck in CET-4 Everybody! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

  2. HDU 2546 饭卡【贪心+01背包】

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  3. servlet方法

    1.每一个Servlet都必须要实现Servlet接口,GenericServlet是个通用的.不特定于任何协议的Servlet,它实现了Servlet接口,而HttpServlet继承于Generi ...

  4. KDtree浅谈

    KDtree浅谈 1.对KDtree的理解 首先要知道$KDtree$的用处,$KDtree$是用来进行多维数点的,一般这些点都是在在而二维及二维以上,因为一维上的问题,我们基本都可以运用线段树来解决 ...

  5. Dfs+Spfa【p1606】[USACO07FEB]荷叶塘Lilypad Pond

    Description 为了让奶牛们娱乐和锻炼,农夫约翰建造了一个美丽的池塘.这个长方形的池子被分成了M行N列个方格(1≤M,N≤30).一些格子是坚固得令人惊讶的莲花,还有一些格子是岩石,其余的只是 ...

  6. SPOJ 3267 DQUERY - D-query (主席树)(区间数的种数)

    DQUERY - D-query #sorting #tree English Vietnamese Given a sequence of n numbers a1, a2, ..., an and ...

  7. JQuery里面的知识

    JQuery是一个javaScript库 JQuery极大的简化了javaScript编程 通过点击 "TIY" 按钮来看看它是如何运行的. 演示JQuery的hide函数,隐藏了 ...

  8. 四. Java继承和多态2. Java super关键字

    super 关键字与 this 类似,this 用来表示当前类的实例,super 用来表示父类. super 可以用在子类中,通过点号(.)来获取父类的成员变量和方法.super 也可以用在子类的子类 ...

  9. Jenkins的安装方法(Windows/Linux)

    前提:要确定本机全部安装了JDK 一.先说官方的安装方式 打开网址:https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins,会留意 ...

  10. numpy自动生成数组

    1 np.arange(),类似于range,通过指定开始值,终值和步长来创建表示等差数列的一维数组,注意该函数和range一样结果不包含终值. >>> np.arange(10) ...