Rdd 算子_转换_groupbykey | 学习笔记

简介: 快速学习 Rdd 算子_转换_groupbykey

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Rdd 算子_转换_groupbykey】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/11972


Rdd 算子_转换_groupbykey


内容介绍:

一、序言

二、group by key的原理

三、group by key 的使用

四、Reduce by key 能不能在 map 端做 combiner

 

一、序言

在前面的学习中,了解到一个算子,是一个聚合操作,就是 reduce by key,它的作用是按照 key 来进行聚合,根据key 来进行分组,然后再把每一组数据进行 reduce 操作,就得到 reduce by keyReduce by key本质上还是一个reduce 操作,但如果我只是想进行分组的话,是不合适。如果只进行分组操作,这是就需要用到 group by key,这个算子就是按照 key 来进行分组即 group

 

二、group by key的原理

如下图所示:

image.png

首先最根本上来讲 group 它也是一个 sheffeld 操作,因为上面有一个 a1这样的一个元素,也是一个 key value,那在第二部分有一个 a1的部分。

那么他们俩的 key 是否一样?但是他俩的分区不一样,所以这两个数据要发往同一个 reduce 的分区,这个时候就看到两个一样的 key,最终生成了一个结果,结果当中 value 的位置是一个数组,那么这个数组里面是两个元素各自动使用,那这就是 group by key 的原理,那至少它是一个是 sheffeled。还有一个特点是,如果后面带的是 by key 那么后面只能处理 key value 的数据。

 

三、group by key 的使用

进入到 IDEA 中,如何实现该方法。先拷贝集合的定义,有了集合之后,直接进行 group by key 操作,group by key不需要接受 function 函数,因为 group by key 是一个 group 操作,按照 key 来进行 group 操作,接下里进行收集结果。

@Test

def groupByKey():Unit =(

sc.parallelize(Seq(("a",1),("a",1)("b",1)))·groupByKey()

.collect()

.foreach(item => println((item)


运行结果如下:

image.png

后面生成了一个类似于数组的东西,里面放置了俩个 key a 的所有值。group by key 的结果形式首先还是一个元祖,元组的第一个位置还是 key,第二个位置是一个 compact,类似于集合,用集合来表示(Kvalue1)(value2))

 

四、Reduce by key 能不能在 map 端做 combiner

1.能不能减少 ioCombiner 最根本的意义是为了减少 ioreduce by key 一个分区只有一条数据,和出来一个分区出来,显然是后者数据更多,所以 Reduce by key map combiner 有意义的,但 group by key  map 段做combiner 是无意义的。因为要进行的是 group 操作,那么在 map 端,进行 combiner 之后,这些数据还要返回来,减少的 io 很少。

reduce by key group by key 有很大区别就是 reduce by key map 段有 combinergroup by key map 段没有 combiner

相关文章
|
关系型数据库 BI 分布式数据库
PolarDB NL2BI解决方案,让你不懂SQL也能进行数据查询分析并生成BI报表
无需创建和开通资源,在预置环境中免费体验PolarDB MySQL及其NL2BI解决方案
PolarDB NL2BI解决方案,让你不懂SQL也能进行数据查询分析并生成BI报表
|
SQL 大数据 关系型数据库
大数据面试:面试官要求我了解过Presto——Presto到底是个什么东西
大数据面试:面试官要求我了解过Presto——Presto到底是个什么东西
283 0
|
XML Java 数据格式
基于注解管理bean~
基于注解管理bean~
|
SQL 人工智能 分布式计算
一文看懂 Cloudera 对 CDH/HDP/CDP 的产品支持策略
一文看懂 Cloudera 对 CDH/HDP/CDP 的产品支持策略
一文看懂 Cloudera 对 CDH/HDP/CDP 的产品支持策略
|
数据建模 Linux 数据库
简单实用的数据建模工具PDManer
PDManer是一款开源的国产数据建模工具
13545 1
简单实用的数据建模工具PDManer
|
Kubernetes Apache 流计算
flink-kubernetes-operator 的简单使用
flink-kubernetes-operator 的简单使用
732 0
|
监控 Java Spring
Spring Boot中使用Actuator进行监控
Spring Boot中使用Actuator进行监控
|
人工智能 JSON 数据格式
[AI CrewAI] 你来当老板,组建AI团队,协作AI Agent完成任务
[AI CrewAI] 你来当老板,组建AI团队,协作AI Agent完成任务
|
机器学习/深度学习 人工智能 前端开发
AI计算机视觉笔记三:WEB端部署YOLOv5
本文档介绍了如何将YOLOv5目标检测模型部署到Web端的方法,包括基于Flask和Streamlit两种实现方案。首先创建Python虚拟环境并安装必要的依赖库。接着详细展示了Flask方案下的前端HTML页面与后端Python逻辑代码,该方案利用Flask框架搭建服务器,处理实时视频流,并显示检测结果。随后介绍了Streamlit方案,该方案更简洁直观,适合快速开发交互式的机器学习应用。通过`streamlit run`命令即可启动应用,支持图像、视频及实时摄像头的目标检测演示。两种部署方式各有优势,Flask灵活性高,适用于复杂项目;而Streamlit则易于上手,便于快速原型设计。
1508 0