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

相关文章
|
数据建模 计算机视觉
SiMBA:基于Mamba的跨图像和多元时间序列的预测模型
微软研究者提出了SiMBA,一种融合Mamba与EinFFT的新架构,用于高效处理图像和时间序列。SiMBA解决了Mamba在大型网络中的不稳定性,结合了卷积、Transformer、频谱方法和状态空间模型的优点。在ImageNet 1K上表现优越,达到84.0%的Top-1准确率,并在多变量长期预测中超越SOTA,降低了MSE和MAE。代码开源,适用于复杂任务的高性能建模。[[论文链接]](https//avoid.overfit.cn/post/c21aa5ca480b47198ee3daefdc7254bb)
2079 3
|
Java 数据安全/隐私保护 Sentinel
面试官:Sentinel是如何实现限流的?
面试官:Sentinel是如何实现限流的?
1579 1
|
缓存 负载均衡 Dubbo
Sentinel 集群限流设计原理
Sentinel 集群限流设计原理
Sentinel 集群限流设计原理
|
安全 NoSQL 关系型数据库
使用cnpm搭建企业内部私有NPM仓库
cnpm是企业内部搭建npm镜像和私有npm仓库的开源方案。它同时解决了现有npm架构的一些问题。
1139 0
使用cnpm搭建企业内部私有NPM仓库
|
3月前
|
监控 安全 Shell
管道符在渗透测试与网络安全中的全面应用指南
管道符是渗透测试与网络安全中的关键工具,既可用于高效系统管理,也可能被攻击者利用实施命令注入、权限提升、数据外泄等攻击。本文全面解析管道符的基础原理、实战应用与防御策略,涵盖Windows与Linux系统差异、攻击技术示例及检测手段,帮助安全人员掌握其利用方式与防护措施,提升系统安全性。
191 6
|
Apache 流计算
【Flink】Flink的三种时间语义
【4月更文挑战第19天】【Flink】Flink的三种时间语义
|
JavaScript 前端开发 索引
如何给组件的元素添加事件监听器?
在组件的元素上添加事件监听器,可以通过在元素上使用 `@事件名` 的语法来实现。例如,`@click="handleClick"` 表示当元素被点击时,会触发 `handleClick` 方法。
|
运维 测试技术 Linux
关于Stress 压力测试工具的介绍与使用
在日益复杂的计算环境中,保证系统的稳定性和性能成为了每个Linux管理员的核心任务。面对不断增长的数据量和业务需求,如何有效评估系统极限和潜在瓶颈? 压力测试工具:stress,成为了不可或缺的助手。这篇记录描述stress工具的使用方法及其在模拟真实负载中的实用性。
关于Stress 压力测试工具的介绍与使用
|
分布式计算 Serverless 数据处理
|
负载均衡 监控 Java
Sentinel介绍与使用
Sentinel介绍与使用
950 3