常用Action类算子列表

  • reduce(func): 通过func函数来对RDD中所有元素进行聚合运算,先运算分区内数据,再运算分区间数据。
scala> val rdd1 = sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[4] at makeRDD at :24# 对1到100进行求和scala> rdd1.reduce(_+_)res4: Int = 5050
  • collect(): 在驱动程序Driver中或存储到HDFS等存储工具中,以数组的形式返回数据集的所有元素。
scala> val rdd1 = sc.makeRDD(1 to 10)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[5] at makeRDD at :24scala> rdd1.collect()res5: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  • count(): 返回RDD中元素的个数
scala> val rdd1 = sc.makeRDD(1 to 100)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[6] at makeRDD at :24scala> rdd1.count()res6: Long = 100
  • first(): 返回RDD中的第一个元素
scala> val rdd1 = sc.makeRDD(5 to 20)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[7] at makeRDD at :24scala> rdd1.first()res7: Int = 5
  • take(num): 返回RDD中前num个元素组成的数据,当num=1时,相当于first()
scala> val rdd1 = sc.makeRDD(1 to 10)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[8] at makeRDD at :24scala> rdd1.take(5)res8: Array[Int] = Array(1, 2, 3, 4, 5)
  • takeOrdered(n): 返回原RDD排序(默认升序排)后,前n个元素组成的数组。
scala> val rdd1 = sc.makeRDD(Array(1,4,6,2,5,8,3,6,9))rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[9] at makeRDD at :24scala> rdd1.takeOrdered(5)res9: Array[Int] = Array(1, 2, 3, 4, 5)
  • aggregate(zeroValue)(seqOp, combOp): 与key-value类型RDD的转换算子aggregateByKey类似,同样是三个参数:初始值zeroValue,分区内函数seqOp,分区间函数combOp,只不过它是一个action算子,触发执行。
scala> val rdd1 = sc.makeRDD(Array(1,2,3,4,5,6),2)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[11] at makeRDD at :24scala> import scala.math._import scala.math._scala> rdd1.aggregate(4)(max(_,_),_+_)res10: Int = 14
  • countByKey(): 前面count执行算子是计算RDD中元素个数,countByKey是针对(K,V)类型的RDD,返回一个(K,Int)类型的map,表示每一个key对应的元素个数。
scala> val rdd1 = sc.parallelize(Array(("a",100),("a",200),("a",300),("b",1),("b",10),("c",1000)))rdd1: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[12] at parallelize at :27# Key为"a"的有3个,key为"b"的有两个,key为以的有"1"个,与value无关scala> rdd1.countByKey()res11: scala.collection.Map[String,Long] = Map(b -> 2, a -> 3, c -> 1)
  • countByValue(): 对RDD中的(k,v)整体进行计数
scala> val rdd1 = sc.parallelize(Array(("a",100),("a",200),("a",200),("b",10),("b",10),("c",1000)))rdd1: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[15] at parallelize at :27scala> rdd1.countByValue()res12: scala.collection.Map[(String, Int),Long] = Map((c,1000) -> 1, (a,200) -> 2, (b,10) -> 2, (a,100) -> 1)
  • foreach(func): 遍历原RDD元素经过func函数运算过后的结果集
scala> val rdd1 = sc.makeRDD(1 to 10)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[19] at makeRDD at :27scala> rdd1.foreach(println)12345678910
  • foreachPartition(func): 按分区遍历原RDD元素经过func函数运算过后的结果, 尤其在这里有插入数据的动作时,需要频繁地创建连接与关闭连接,所以一个分区一个分区的处理效率高,减少gc
scala> val rdd1 = sc.makeRDD(1 to 10, 3)rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[23] at makeRDD at :27# 一个分区只创建一次连接scala> rdd1.foreachPartition(iter => {println("打开数据库连接");iter.foreach(x=>{println("拼拉sql, 插入数据库");x});println("关闭数据库连接")})打开数据库连接拼拉sql, 插入数据库拼拉sql, 插入数据库拼拉sql, 插入数据库关闭数据库连接打开数据库连接拼拉sql, 插入数据库拼拉sql, 插入数据库拼拉sql, 插入数据库拼拉sql, 插入数据库关闭数据库连接打开数据库连接拼拉sql, 插入数据库拼拉sql, 插入数据库拼拉sql, 插入数据库关闭数据库连接

spark算子_十、Spark之详解Action类算子相关推荐

  1. 原创:Spark中GraphX图运算pregel详解

    原创:Spark中GraphX图运算pregel详解 由于本人文字表达能力不足,还是多多以代码形式表述,首先展示测试代码,然后解释: package com.txq.spark.test import ...

  2. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  3. python加密字符串小写字母循环后错两位_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  4. OpenGL ES _ 着色器_片断着色器详解

    OpenGL ES _ 入门_01 OpenGL ES _ 入门_02 OpenGL ES _ 入门_03 OpenGL ES _ 入门_04 OpenGL ES _ 入门_05 OpenGL ES ...

  5. 十二、详解计算网络中的流量控制和差错控制、HDLC

    十二.详解计算网络中的流量控制和差错控制 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动 ...

  6. 32.深度解密三十二:详解影响QQ群整体排名的那些秘密

    网络营销推广技术.技巧深度解密(三十二)指南: 1.本文档适合零基础以及互联网营销推广人员,主要讲解营销QQ群排名的一些问题. 2.原创版权文档,任何抄袭或者全部.部分模仿都是侵权行为. 3.敬畏法律 ...

  7. 学习电气自动化PLC编程最基础的十大知识点详解

    这篇文章其实是学习PLC自动化过程中必须要理解的基础问题,不管是西门子PLC还是三菱PLC,抑或欧姆龙PLC,以及国产品牌的PLC,这些问题都必须理解透,才能更好的开始自动化编程.不然指令学完了梯形图 ...

  8. 十大排序详解(java实现)

    十大排序详解(java实现) 一.十大排序算法概述 1.定义 2.分类 3.比较 4.相关概念 二.各算法原理及实现 1.冒泡排序 2.简单选择排序(Selection Sort) 3.直接插入排序( ...

  9. Spark核心编程系列(一)——RDD详解

    目录 Spark核心编程系列--RDD详解(一) RDD概念 RDD与IO之间的关系 RDD的核心属性 RDD执行原理 基础编程 RDD创建 RDD的并行度与分区 参考 Spark核心编程系列--RD ...

最新文章

  1. vs2012常用快捷键
  2. ROW_NUMBER 函数
  3. PostgreSQL将表导出为CSV(服务器端、客户机端)完整版
  4. centos7配置不开启浏览器执行基于python+selenium的功能自动化脚本
  5. Java之文件流操作的文件读写
  6. iOS开发常用的RGB色值和宏
  7. ArcMap 导入Excel坐标数据
  8. 前端性能优化的重要方案:图片懒加载
  9. 190815每日一句
  10. 【MFC】解决窗口大小改变之后,ComboBox当前选项文字出现蓝色背景
  11. win10下修改C盘用户文件夹名
  12. Python 内置容器 之 字典 ( dict )超详细指南
  13. 【超超超easy】5分钟:自制酷炫猫咪词云图,会点鼠标即可。
  14. pandas 转换为文本类型_python – pandas将文本特征转换为数值
  15. MySQL数据库基础:各类窗口函数操作一文详解
  16. 如何用Python检验线性回归的假设是否满足
  17. pda扫码相关的打印机,用蓝牙连接打印,斑马打印机,zsu
  18. Codesys数据结构:1.1 标准数据类型
  19. 服务器上传图片显示图片404,关于使用spring文件上传遇到的服务器中的图片访问不到报404的问题...
  20. 基于单片机的智能灯控系统

热门文章

  1. html的语义化面试题,前端面试题-HTML结构语义化
  2. 企业微信H5_身份验证,PC网站企业微信扫码授权登录
  3. Centos7 安装Go环境
  4. linux Nas挂载
  5. vba上传指定文件ftp服务器
  6. VBA各种查询方法介绍和应用举例
  7. android java 实体类 object变量 保存_Java中的实体类--Serializable接口、transient 关键字...
  8. 希捷银河声音大_【推仔说新闻】那款硬盘它终于来了 希捷推出首款双磁臂硬盘...
  9. findler mac 隐藏文件_Fiddler配合Proxifier抓包PC客户端HTTPS明文数据
  10. mysql数据库模型相应解释_数据库事务系列-MySQL跨行事务模型