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

Spark-core编程总结

1.reduce

功能:聚集RDD中的所有元素,先聚合分区内数据,再聚合分区间数据。

示例rdd.reduce(_+_) RDD中的所有整数相加。

2.collect

功能:在驱动程序中,以数组Array的形式返回数据集的所有元素。

示例rdd.collect() 返回RDD中所有元素的数组。

3.foreach

功能:分布式遍历RDD中的每一个元素,调用指定函数。

示例rdd.collect().foreach(println) 先收集RDD元素,然后逐个打印。

4.count

功能:返回RDD中元素的个数。

示例rdd.count() 返回RDD中的元素数量。

5.first

功能:返回RDD中的第一个元素。

示例rdd.first() 返回RDD中的第一个元素。

6.take

功能:返回一个由RDD的前n个元素组成的数组。

示例rdd.take(2) 返回RDD中的前两个元素组成的数组。

7.takeOrdered

功能:返回RDD排序后的前n个元素组成的数组。

示例rdd.takeOrdered(2) 返回RDD中排序后的前两个元素。

8.aggregate

功能:分区的数据通过初始值和分区内的数据进行聚合,然后再和初始值进行分区间的数据聚合。

示例rdd.aggregate(0)(_+_, _+_) RDD的所有元素相加。

9.fold

功能:折叠操作,aggregate的简化版操作。

示例rdd.fold(0)(_+_) RDD的所有元素相加,与aggregate的示例类似但更简洁。

10.countByKey

功能:统计每种key的个数,适用于RDD[(K, V)]类型。

示例rdd.countByKey() 统计每种key出现的次数。

11.save相关算子

功能:将数据保存到不同格式的文件中,包括文本文件、对象文件和序列文件。

示例

rdd.saveAsTextFile("path") 保存为文本文件。rdd.saveAsObjectFile("path") 保存为对象文件。

rdd.saveAsSequenceFile("path") 保存为序列文件(了解即可)。

12.累加器(Accumulator

实现原理
累加器用于把Executor端的变量信息聚合到Driver端。在Driver程序中定义的变量,在Executor端的每个Task都会得到这个变量的一份新的副本。每个Task更新这些副本的值后,传回Driver端进行merge操作。

常用方法

sparkContext.longAccumulator(name: String): 创建一个长整型累加器。

sparkContext.doubleAccumulator(name: String): 创建一个双精度浮点型累加器。

自定义累加器:通过继承AccumulatorV2类,实现自定义的累加逻辑。

13.广播变量(Broadcast Variable

实现原理
广播变量用于高效分发较大的只读对象。它向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。Spark会为每个任务分别发送该变量,但在多个并行操作中可以共享同一个广播变量,从而提高效率。

常用方法

sparkContext.broadcastT](value: T): 创建一个广播变量。

总结

累加器适用于在分布式计算过程中聚合数据,如统计和、最大值、最小值等。

广播变量适用于在多个任务之间共享大对象,以减少数据传输开销,提高计算效率。

http://www.dtcms.com/a/125424.html

相关文章:

  • 接听电话,手机靠近耳朵后拿开,挂断电话,设备自动锁屏
  • 漏洞扫描系统docker版本更新(2025.4.10)
  • Trea CN多多与主流AI编程工具万字解析
  • [UEC++]UE5C++各类变量相关知识及其API(更新中)
  • C语言,原码、补码、反码
  • 操作系统 3.4-段页结合的实际内存管理
  • 【远程工具】1.1 时间处理设计与实现(datetime库lib.rs)
  • 图灵逆向——题十一-wasm小试牛刀
  • 实习期间如何提升留用概率?
  • 再谈 FireBird 自增字段在ClientDataSet里如何处理
  • yolov8在windows系统的C++版本的onnxruntime部署方法
  • C++笔记之父类引用是否可以访问到子类特有的属性?
  • APP动态交互原型实例|墨刀变量控制+条件判断教程
  • 基于ImGui+FFmpeg实现播放器
  • freertos内存管理简要概述
  • RV1126 人脸识别门禁系统解决方案
  • 安全岗の夺命连环问:(第贰篇)XSS三重奏与RASP防御革命
  • js创建对象
  • 人形机器人发展趋势粗谈
  • 模型上下文协议MCP的缺点与潜在问题。
  • 【antd + vue】Tree 树形控件:默认展开所有树节点 、点击文字可以“选中/取消选中”节点
  • 代码随想录第15天:(二叉树)
  • 企业指标设计方法指南
  • Matlab 汽车ABS的bangbang控制和模糊PID控制
  • Linux 安装 vscode
  • erlang的安装-linux
  • 工业相机使用笔记
  • “实时滚动”插件:一个简单的基于vue.js的无缝滚动
  • 懒人版)RF_NSGA2_Topsis随机森林做代理预测模型NSGA3结合熵权法Topsis反求最佳因变量和对应的最佳自变量组合(含帕累托前沿解)
  • 腾讯会议for flatpak