当前位置: 首页 > java >正文

行动算子(知识)

行动算子
行动算子(Action) 是一种触发 RDD 计算的操作。与转换算子(Transformation)不同,行动算子会返回一个结果给驱动程序(Driver Program),或者将结果写入外部存储系统。行动算子是触发 Spark 计算的“触发点”,因为 Spark 的 RDD 是懒惰计算的,只有在执行行动算子时,才会真正开始计算。

下面介绍集中常见的行动算子。

1. collect算子
作用:用于将分布式存储在集群中各个节点上的 RDD 元素收集到驱动程序(Driver Program)中,并以数组的形式返回。这意味着该算子会触发 Spark 作业的执行,将之前的转换操作进行实际计算,并将结果汇总到驱动程序所在的节点。

格式:def collect(): Array[T]

参数说明:该算子没有参数。

返回值:返回一个包含 RDD 中所有元素的数组,数组元素的类型与 RDD 中元素的类型一致。

示例代码

object CollectExample {

  def main(args: Array[String]): Unit = {

    // 省略 ...

    // 创建一个包含整数的 RDD

    val numbers = sc.parallelize(1 to 10)

    // 使用 collect 算子将 RDD 中的元素收集到驱动程序

    val collectedNumbers = numbers.collect()

    // 输出收集到的元素

    collectedNumbers.foreach(println)

    // 停止 SparkContext

    sc.stop()

  }}

2.reduce算子
作用:reduce 用于对 RDD 中的元素进行全局聚合操作,例如计算 RDD 中所有元素的总和、最大值、最小值等。在分布式计算环境中,reduce 会先在每个分区内进行局部聚合,然后将各个分区的结果进行全局聚合,最终得到一个单一的结果。

格式

def reduce(func: (T, T) => T): T

参数说明:

func: (T, T) => T:这是一个二元函数,用于定义如何对 RDD 中的元素进行聚合。函数接收两个类型为 T 的元素,返回一个类型为 T 的结果。例如,若要对 RDD 中的整数进行求和,func 可以是 (x, y) => x + y。

返回值:返回一个单一的值,其类型与 RDD 中元素的类型相同。

示例代码

以下是一个使用 reduce 计算 RDD 中所有整数之和的示例:

object ReduceExample {

  def main(args: Array[String]): Unit = {

    // 省略...

    // 创建一个包含整数的 RDD

    val numbers = sc.parallelize(1 to 10)

    // 使用 reduce 算子计算所有元素的总和

    val sum = numbers.reduce(_ + _)

    // 输出结果

    println(s"RDD 中所有元素的总和为: $sum")

    // 停止 SparkContext

    sc.stop()

  }}

3.count算子
作用:count 是 Spark 中的一个行动算子,用于统计 RDD 中元素的数量。它会触发 Spark 作业的实际执行,对 RDD 中的所有元素进行计数,并将最终的计数结果返回给驱动程序。例如在进行数据验证、抽样或者评估数据处理任务的复杂度时,都可能需要知道 RDD 中元素的数量

格式

def count(): Long

参数说明:该算子没有参数。

返回值:返回一个 Long 类型的值,表示 RDD 中元素的数量。

4. 示例代码

import org.apache.spark.{SparkConf, SparkContext}

object CountExample {

  def main(args: Array[String]): Unit = {

    // 创建 SparkConf 对象

    val conf = new SparkConf().setAppName("CountExample").setMaster("local[*]")

    // 创建 SparkContext 对象

    val sc = new SparkContext(conf)

    // 创建一个包含字符串的 RDD

    val words = sc.parallelize(List("apple", "banana", "cherry", "date"))

    // 使用 count 算子统计 RDD 中元素的数量

    val count = words.count()

    // 输出结果

    println(s"RDD 中元素的数量为: $count")

    // 停止 SparkContext

    sc.stop()

  }}

4.foreach算子
作用:foreach 用于对 RDD 中的每个元素应用指定的函数。它主要用于执行一些副作用操作,比如将数据写入外部存储系统(如数据库、文件系统等),或者进行日志记录等。与其他转换算子不同,foreach 不会返回一个新的 RDD,而是直接对每个元素执行操作。

格式def foreach(f: T => Unit): Unit

参数说明:

f: T => Unit:这是一个函数,它接收一个类型为 T 的元素(T 为 RDD 中元素的类型),并对该元素执行相应的操作,但不返回任何值(返回类型为 Unit)。

返回值:该算子的返回类型为 Unit,即不返回任何有意义的值,它主要是为了执行副作用操作。

示例代码

object ForeachExample {

  def main(args: Array[String]): Unit = {

    

    // 创建一个包含整数的 RDD

    val numbers = sc.parallelize(1 to 5)

    // 使用 foreach 算子对每个元素应用打印操作

    numbers.foreach(num => println(s"元素: $num"))

    // 停止 SparkContext

    sc.stop()

  }

}
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/2401_84653595/article/details/147923788

http://www.xdnf.cn/news/5989.html

相关文章:

  • GZip+Base64压缩字符串在ios上解压报错问题解决(安卓、PC模拟器正常)
  • 服务器中存储空间不足该怎么办?
  • IP协议的特性
  • 大白话解释联邦学习
  • skolelinux系统详解
  • Proxmox VE 8.4.0显卡直通完整指南:NVIDIA Tesla T4 实战
  • 什么是懒加载?
  • 06_java常见集合类底层实现
  • unity 制作某个旋转动画
  • 分割一切(SAM) 论文阅读:Segment Anything
  • 用vue和go实现登录加密
  • 科研领域开源情报应用:从全球信息网络到创新决策
  • 微机原理|| 流水灯实验
  • 两种常见的C语言实现64位无符号整数乘以64位无符号整数的实现方法
  • 【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历
  • Apifox使用方法
  • Xianyu AutoAgent,AI闲鱼客服机器人
  • 无人机信号监测系统技术解析
  • codeforcesE. Anna and the Valentine‘s Day Gift
  • 在 STM32 上使用 register 关键字
  • 部署大模型:解决ollama.service: Failed with result ‘exit-code‘的问题
  • ROS多机集群组网通信(四)——Ubuntu 20.04图形化配置 Ad-Hoc组网通信指南
  • element-plus自动导入插件
  • 使用DevEco Studio性能分析工具高效解决鸿蒙原生应用内存问题
  • python的命令库Envoy
  • 【树莓派4B】对树莓派4B进行换源
  • 关于索引的使用
  • Fiori学习专题四十一:表单控件
  • js中的同步方法及异步方法
  • [中国版 Cursor ]?!CodeBuddy快捷搭建个人展示页面指南