RDD 入门_ReduceByKey 算子|学习笔记

简介: 快速学习 RDD 入门_ReduceByKey 算子

开发者学堂课程【大数据 Spark2020最新课程(知识精讲与实战演练)第一阶段RDD 入门_ReduceByKey 算子】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/688/detail/11955


RDD 入门_ReduceByKey 算子


ReduceByKey 算子

主要作用:

首先按照 Key 分组,接下来把整组的 Value 计算出一个聚合值,这个操作与 mapreduce 中的 reduce 高度相似。

调用:

Def reduceByKey(func:(V,V)-V):RDD[(K,V)]

image.png假设其中传递的函数为:

reduceByKey(curr,agg)=>curr+agg ,入口的 RDD1 ,即最终想得到的 RDD1 ,出口 RDD2,即最终输出的 RDD2,ByKey 指按照 K 进行归约,该条件约束规则为 RDD1 中需要是二院元组,代表 KeyValue 型数据。

执行过程:

首先分组,然后通过算子进行 reduce ,对每个组进行 reduce ,第一组得到 agg =0,curr =1,agg (局部结果)更新,以此类推得到四组结果。

代码编写如下:

@Test

def reduceByKeyTest():Unit ={

//1.创建 RDD

val rdd1 = sc. parallelize(Seq(“Hello lily”, “Hello lucy”,

“Hello tim”))

//2.处理数据

val rdd2 = rdd1.flatmap (item =>item.split (regex= “”))

map(item =>(item,1))

reduceByKey((curr,agg)=>curr+agg)

//3.得到结果

val result = rdd2.collect()

result.foreach(item=>println(item))

//4.关闭 sc

sc.stop()

}

运行结果如图所示:

image.png

总结:

ReduceByKey 第一步先按照 Key 分组,然后对每一组进行聚合,得到结果。

Spark 总述如图所示:

image.png

相关文章
|
存储 分布式计算 Hadoop
大数据之hadoop3入门到精通(一)
大数据之hadoop3入门到精通(一)
495 1
|
数据建模 计算机视觉
SiMBA:基于Mamba的跨图像和多元时间序列的预测模型
微软研究者提出了SiMBA,一种融合Mamba与EinFFT的新架构,用于高效处理图像和时间序列。SiMBA解决了Mamba在大型网络中的不稳定性,结合了卷积、Transformer、频谱方法和状态空间模型的优点。在ImageNet 1K上表现优越,达到84.0%的Top-1准确率,并在多变量长期预测中超越SOTA,降低了MSE和MAE。代码开源,适用于复杂任务的高性能建模。[[论文链接]](https//avoid.overfit.cn/post/c21aa5ca480b47198ee3daefdc7254bb)
1886 3
|
Apache 流计算
【Flink】Flink的三种时间语义
【4月更文挑战第19天】【Flink】Flink的三种时间语义
|
11月前
|
JavaScript 前端开发 索引
如何给组件的元素添加事件监听器?
在组件的元素上添加事件监听器,可以通过在元素上使用 `@事件名` 的语法来实现。例如,`@click="handleClick"` 表示当元素被点击时,会触发 `handleClick` 方法。
|
8月前
|
存储 监控 算法
Flink 四大基石之 Checkpoint 使用详解
Flink 的 Checkpoint 机制通过定期插入 Barrier 将数据流切分并进行快照,确保故障时能从最近的 Checkpoint 恢复,保障数据一致性。Checkpoint 分为精确一次和至少一次两种语义,前者确保每个数据仅处理一次,后者允许重复处理但不会丢失数据。此外,Flink 提供多种重启策略,如固定延迟、失败率和无重启策略,以应对不同场景。SavePoint 是手动触发的 Checkpoint,用于作业升级和迁移。Checkpoint 执行流程包括 Barrier 注入、算子状态快照、Barrier 对齐和完成 Checkpoint。
1372 20
|
运维 测试技术 Linux
关于Stress 压力测试工具的介绍与使用
在日益复杂的计算环境中,保证系统的稳定性和性能成为了每个Linux管理员的核心任务。面对不断增长的数据量和业务需求,如何有效评估系统极限和潜在瓶颈? 压力测试工具:stress,成为了不可或缺的助手。这篇记录描述stress工具的使用方法及其在模拟真实负载中的实用性。
关于Stress 压力测试工具的介绍与使用
|
11月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
1719 5
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:图神经网络(GNN)
使用Python实现深度学习模型:图神经网络(GNN)
1014 1
|
SQL Java 数据库连接
17:数据库连接池与Servlet整合-Java Web
17:数据库连接池与Servlet整合-Java Web
364 3
|
存储 算法 搜索推荐
使用Python实现单链表
使用Python实现单链表
162 0