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. localize by triangle note

    1.当拟合结果不为1时,取和上次相近的作为结果2.python画三角拟合图bug (3.减小三角拟合波动:对激光雷达数据进行滤波等处理)(4.在计算三角起始和结束位置时,添加用距离值过滤) theta ...

  2. luogu P1347 排序

    题目描述 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列,例如,一个有序的数列A,B,C,D 表示A<B,B<C,C<D.在这道题中,我们将给你一系列形如A<B ...

  3. javascript与java的不同之处

    javascript与java的不同之处   虽然很像,但不是一种语言. 二者的区别体现在: 首先,它们是两个公司开发的不同的两个产品,Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合 ...

  4. What is a fully qualified domain name (FQDN)?

    fully qualified domain name (FQDN) is the complete domain name for a specific computer, or host, on ...

  5. RestAPI的实现

    转自:http://blog.csdn.net/yanical/article/details/7856670 Rest的作者认为计算机发展到现在,最大的成就不是企业应用,而是web,是漫漫无边的互联 ...

  6. Android-Binder 简析

    前言 对于Android来说,Binder的重要性怎么说都不为过.不管是我们的四大组件Activity.Service.BroadcastReceiver.ContentProvider,还是经常在应 ...

  7. 设计模式之组合模式(PHP实现)

    github地址:https://github.com/ZQCard/design_pattern /** 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作 ...

  8. python2 to3

    http://blog.csdn.net/zhzh213/article/details/53842790 有个内部工具叫做2to3.py位置在Python3/tool/script文件夹. 首先CD ...

  9. C++ 如何得到当前进程所占用的内存呢?【转】

    使用SDK的PSAPI (Process Status Helper)中的BOOL GetProcessMemoryInfo( HANDLE Process, PPROCESS_MEMORY_COUN ...

  10. ISP模块之色彩增强算法--HSV空间Saturation通道调整 .

    色彩增强不同于彩色图像增强,图像增强的一般处理方式为直方图均衡化等,目的是为了增强图像局部以及整体对比度.而色彩增强的目的是为了使的原有的不饱和的色彩信息变得饱和.丰富起来.对应于Photoshop里 ...