官方文档上列举共有32种常见算子,包括Transformation的20种操作和Action的12种操作。

Transformation:

1.map

map的输入变换函数应用于RDD中所有元素,而mapPartitions应用于所有分区。区别于mapPartitions主要在于调用粒度不同。如parallelize(1 to 10, 3),map函数执行10次,而mapPartitions函数执行3次。

2.filter(function)

过滤操作,满足filter内function函数为true的RDD内所有元素组成一个新的数据集。如:filter(a == 1)。

3.flatMap(function)

map是对RDD中元素逐一进行函数操作映射为另外一个RDD,而flatMap操作是将函数应用于RDD之中的每一个元素,将返回的迭代器的所有内容构成新的RDD。而flatMap操作是将函数应用于RDD中每一个元素,将返回的迭代器的所有内容构成RDD。

flatMap与map区别在于map为“映射”,而flatMap“先映射,后扁平化”,map对每一次(func)都产生一个元素,返回一个对象,而flatMap多一步就是将所有对象合并为一个对象。

4.mapPartitions(function)

区于foreachPartition(属于Action,且无返回值),而mapPartitions可获取返回值。与map的区别前面已经提到过了,但由于单独运行于RDD的每个分区上(block),所以在一个类型为T的RDD上运行时,(function)必须是Iterator

=> Iterator

类型的方法(入参)。

5.mapPartitionsWithIndex(function) 与mapPartitions类似,但需要提供一个表示分区索引值的整型值作为参数,因此function必须是(int, Iterator

)=>Iterator

类型的。

​ 6.sample(withReplacement, fraction, seed) 采样操作,用于从样本中取出部分数据。withReplacement是否放回,fraction采样比例,seed用于指定的随机数生成器的种子。(是否放回抽样分true和false,fraction取样比例为(0, 1]。seed种子为整型实数。) ​ 7.union(otherDataSet) 对于源数据集和其他数据集求并集,不去重。 ​ 8.intersection(otherDataSet) 对于源数据集和其他数据集求交集,并去重,且无序返回。 ​ 9.distinct([numTasks]) 返回一个在源数据集去重之后的新数据集,即去重,并局部无序而整体有序返回。 ​ ​ 10.groupByKey([numTasks]) 在一个PairRDD或(k,v)RDD上调用,返回一个(k,Iterable

)。主要作用是将相同的所有的键值对分组到一个集合序列当中,其顺序是不确定的。groupByKey是把所有的键值对集合都加载到内存中存储计算,若一个键对应值太多,则易导致内存溢出。

在此,用之前求并集的union方法,将pair1,pair2变为有相同键值的pair3,而后进行groupByKey ​ 11.reduceByKey(function,[numTasks]) 与groupByKey类似,却有不同。如(a,1), (a,2), (b,1), (b,2)。groupByKey产生中间结果为( (a,1), (a,2) ), ( (b,1), (b,2) )。而reduceByKey为(a,3), (b,3)。 reduceByKey主要作用是聚合,groupByKey主要作用是分组。(function对于key值来进行聚合) ​ 12.aggregateByKey(zeroValue)(seqOp, combOp, [numTasks]) 类似reduceByKey,对pairRDD中想用的key值进行聚合操作,使用初始值(seqOp中使用,而combOpenCL中未使用)对应返回值为pairRDD,而区于aggregate(返回值为非RDD) ​ 13.sortByKey([ascending], [numTasks]) 同样是基于pairRDD的,根据key值来进行排序。ascending升序,默认为true,即升序;numTasks 14.join(otherDataSet,[numTasks]) 加入一个RDD,在一个(k,v)和(k,w)类型的dataSet上调用,返回一个(k,(v,w))的pair dataSet。 ​ 15.cogroup(otherDataSet,[numTasks]) 合并两个RDD,生成一个新的RDD。实例中包含两个Iterable值,第一个表示RDD1中相同值,第二个表示RDD2中相同值(key值),这个操作需要通过partitioner进行重新分区,因此需要执行一次shuffle操作。(若两个RDD在此之前进行过shuffle,则不需要) ​ 16.cartesian(otherDataSet) 求笛卡尔乘积。该操作不会执行shuffle操作。 ​ 17.pipe(command,[envVars]) 通过一个shell命令来对RDD各分区进行“管道化”。通过pipe变换将一些shell命令用于Spark中生成的新RDD,如: ​ 18.coalesce(numPartitions) 重新分区,减少RDD中分区的数量到numPartitions。 ​ 19.repartition(numPartitions) repartition是coalesce接口中shuffle为true的简易实现,即Reshuffle RDD并随机分区,使各分区数据量尽可能平衡。若分区之后分区数远大于原分区数,则需要shuffle。 ​ 20.repartitionAndSortWithinPartitions(partitioner) 该方法根据partitioner对RDD进行分区,并且在每个结果分区中按key进行排序。 Action: 1.reduce(function) reduce将RDD中元素两两传递给输入函数,同时产生一个新值,新值与RDD中下一个元素再被传递给输入函数,直到最后只有一个值为止。 ​ 2.collect() 将一个RDD以一个Array数组形式返回其中的所有元素。 ​ 3.count() 返回数据集中元素个数,默认Long类型。 ​ 4.first() 返回数据集的第一个元素(类似于take(1)) ​ 5.takeSample(withReplacement, num, [seed]) 对于一个数据集进行随机抽样,返回一个包含num个随机抽样元素的数组,withReplacement表示是否有放回抽样,参数seed指定生成随机数的种子。 该方法仅在预期结果数组很小的情况下使用,因为所有数据都被加载到driver端的内存中。 ​ 6.take(n) 返回一个包含数据集前n个元素的数组(从0下标到n-1下标的元素),不排序。 ​ 7.takeOrdered(n,[ordering]) 返回RDD中前n个元素,并按默认顺序排序(升序)或者按自定义比较器顺序排序。 ​ 8.saveAsTextFile(path) 将dataSet中元素以文本文件的形式写入本地文件系统或者HDFS等。Spark将对每个元素调用toString方法,将数据元素转换为文本文件中的一行记录。 若将文件保存到本地文件系统,那么只会保存在executor所在机器的本地目录。 ​ 9.saveAsSequenceFile(path)(Java and Scala) 将dataSet中元素以Hadoop SequenceFile的形式写入本地文件系统或者HDFS等。(对pairRDD操作) ​ 10.saveAsObjectFile(path)(Java and Scala) 将数据集中元素以ObjectFile形式写入本地文件系统或者HDFS等。 ​ ​ 11.countByKey() 用于统计RDD[K,V]中每个K的数量,返回具有每个key的计数的(k,int)pairs的hashMap。 ​ 12.foreach(function) 对数据集中每一个元素运行函数function。

java中代码实现笛卡尔_java实现笛卡尔相关推荐

  1. JAVA中console方法怎么用_Java中Console对象实例代码

    Java中Console对象实例代码 发布于 2020-12-20| 复制链接 摘记: 在JDK 6中新增了java.io.Console类,可以让您取得字节为基础的主控台装置,例如,您可以藉由Sys ...

  2. java中的表达式是指_Java 表达式,语句和代码块

    我们已经理解了变量和运算符,是时间学习下表达式,语句和代码块了.我们用运算符来构建表达式,计算出一个值:而表达式是语句的核心组件:而语句又组成了代码块: Expression - 表达式 表达式是由变 ...

  3. java中怎么编写围棋对弈_java课程设计围棋对弈(含代码).doc

    java课程设计围棋对弈(含代码).doc C:\ProgramFiles\Java\jdk1.8.0_45Java程序课程设计任务书1.主要任务与目标创建一个围棋对弈平台.基于Panel类定义一个面 ...

  4. java中 复制到下一行_java代码复制到下一行

    java代码复制到下一行 [2021-02-10 13:04:40]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/( ...

  5. java 静态代码块的作用_Java中什么是静态代码块,有什么作用?

    在java中使用static关键字声明的代码块.静态块用于初始化类,为类的属性初始化.每个静态代码块只会执行一次.静态代码块随着类加载而加载,有多个静态代码块的,按代码块前后顺序加载. 由于JVM在加 ...

  6. java中switch用法举例范围_Java中Switch用法代码示例

    一.java当中的switch与C#相比有以下区别 注:在java中switch后的表达式的类型只能为以下几种:byte.short.char.int(在Java1.6中是这样), 在java1.7后 ...

  7. java中实现具有传递性吗_Java中volatile关键字详解,jvm内存模型,原子性、可见性、有序性...

    一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每条线程中还有自己的工作内存,线程的工作 ...

  8. java中的匿名类方法覆盖_Java技巧:用匿名类来实现简化程序调试

    Java技巧:用匿名类来实现简化程序调试 在Java中,匿名类(Anonymous inner classes)多用来处理事件(event handle).但其实,它们对于debug也很有帮助.本文将 ...

  9. java中用于选择按钮的语句_java程序员考试套题1

    Java练习一 一.选择题 1.在Java中,下列()方法可以把JFrame对象jFrame的布局管理器设为FlowLayout 类型. A.jFrame.setLayout(new FlowLayo ...

  10. java中属性文件读取案例_java相关:Spring中属性文件properties的读取与使用详解

    java相关:Spring中属性文件properties的读取与使用详解 发布于 2020-6-3| 复制链接 摘记: Spring中属性文件properties的读取与使用详解实际项目中,通常将一些 ...

最新文章

  1. os.walk(path)遍历path下的所有目录和文件
  2. 从另一服务器传输文件到本服务器(服务器间传输文件)
  3. C++重载>>和<<输入和输出运算符)
  4. 阈值Java_亲测有效!一种完美动态阈值白平衡算法 Java实现。
  5. 2.Spring Cloud Alibaba教程:Linux安装Nacos1.3.1以及配置MySQL持久化
  6. [Qt教程] 第35篇 网络(五)获取本机网络信息
  7. saas java框架_XMReport-提供web项目Java套打解决方案
  8. 聊城市计算机专业,聊城市关于2018年下半年计算机技术与软件专业技术资格(水平)考试考务工作有关问题的通知...
  9. 米粉期盼小米Civi推Pro版本:搭载骁龙870旗舰芯片
  10. 一般纳米材料是指尺度为_纳米是什么米?什么是纳米材料?(1)
  11. C#函数学习及常用的类
  12. Windows自启动程序的十大藏身之所
  13. 计算机组成原理—存储系统总结
  14. DNS   案例1 案例5轮询
  15. 带存储功能的计算器是什么样的_19年中级会计考生能不能带计算器考试?今天统一回复!...
  16. 日记侠:写文章快速赚钱的方法就3个字
  17. docker安装踩坑
  18. HttpMessageNotReadableException: Required request body is missing
  19. easypoi 语法_高中英语 | 必修1选修8必须掌握的语法重难点汇总 (全八册)
  20. Ariduino入门笔记——11. Arduino 默认函数(USB设备控制)

热门文章

  1. 川藏之行——奇瑞QQ冰淇淋再次出发
  2. matplotlib之pyplot模块——调整子图布局(subplots_adjust、tight_layout)
  3. NAR | IMG/VR v4:在广泛的功能、分类学和生态学元数据框架内的未培养病毒基因组扩展数据库...
  4. js比较时间日期大小和获取月份最后一天日期
  5. 转载的一篇关于SAP中国研究院总裁芮祥麟的文章_SAP刘梦_新浪博客
  6. Verilog:generate-for 语句(用法,及与for语句区别)
  7. S32K的LinStack组件使用(LDF配置LIN)
  8. 论文翻译-通过无监督方法产生不同风格的唐诗
  9. powerbi 实现 RFM用户模型
  10. js的3DES加密与解密