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): 创建一个广播变量。

总结

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值