RDD转换算子

一、Value单值类型
1、Map
将处理的数据逐条进行映射转换,这里的转换可以是类型的转换,也可以是值的转换,通常后接匿名函数。
分区内的而数据执行是逻辑有序的,若是不同的分区,则数据逻辑执行是无序的。
2、mapPartitions
将待处理的数据以分区为单位发送到计算系欸但进行处理,任意的数据,把一个分区的数据全部拿到之后在做操作,在内存中进行操作,以分区为单位进行数据转换操作,但是会将整个数据加载到内存中进行引用如果是处理完的数据是不会被释放掉,存在对象的引用在内存较小,数据量较大的情况下,可能会使得内存溢出。
思考一个问题:map 和 mapPartitions 的区别?
数据处理角度:
Map算子是分区内的一个数据一个数据的执行,类似于串行惭怍,而mapPratitions算子是以分区为单位进行批处理操作
功能的角度:
Map主要目的是将数据源中的数据及您修改传唤和改变,但是不会较少或增多数据,mapPartitions算子需要传递一个迭代器,返回一个迭代器,没有要求的蒜素个数保持不变,所以可以增加或减少数据
性能的角度:
Map算子因为类似于串行操作,所以性能较低,而mapPratitions算子类似于不批处理操作,所以性能较高。但是mapPratitions算子会长时间占用内存,那么这样会导致呢哦村可能不够用,出现内存溢出的错误
使用建议:所以在内存有限的情况下,建议使用Map
3、mapPartitionsWithIndex
将待处理的数据一分区为单位发送到计算节点进行处理,这里的处理值得似乎可以及进行任意的处理,哪怕是过滤数据,在处理时候同时可以获取到当前分区的索引。
4、flatMap
将处理的数据进行扁平化后再进行映射处理,(类似scala中的扁平化,将两个数据源拆开打散)
5、glom
将同一个分区的数据直接转换为相同类型的内存数据进行处理,且分区不变,将一个分区的数据归为一个数组
6、groupBy
按照自己制定的规则对数据及逆行重新分组,而不是分区,分区默认不变,groupBy会把所有数据打乱,并且会将数据进行重新组合,此过程中会设计shuffle操作。
7、filter
将数据按照自己指定的规则进行筛选过滤,符合规则的数据保留,不符合规则的数据丢弃。当数据进行筛选过滤以后,分区内的数据可能不均衡。逻辑原理:当按照一定的规则进行筛选过滤以后,重新分配到各个分区中,可能会导致数据倾斜。

8、sample
按照指定的规则从数据源中抽取数据,再生产环境中,通常也用作抽样取样操作,对于庞大的数据量,取样能判断整体的数据结构,对于取样操作:通常有取样放回(泊松数据放回)和取样不放回操作(伯努利数据不放回)。取样放回会使得数据源不断扩大
参数解释:
第一个参数=>判断取样的数据是否放回,false 不放回,true 放回
第二个参数=>对于取样不放回:范围【0,1】该参数表示数据源中每条数据被抽取的概率。
对于取样放回:范围大于0,表示每一个元素被期望抽到的可能次数.
第三个参数:随机数种子,抽取数据时随机算法的种子 当把种子确定了之后,每次抽取的数据也就定了,如果不传递第三个参数,则每次执行的结果也就不一样
使用场景:在数据倾斜时候使用,应用场景比较广泛,例如在数据分析中,可以从海量数据中抽取一部分样本进行分析,以降低计算量和时间成本;在测试和调试时,可以从数据集中抽取一小部分数据进行验证;在机器学习中,可以采用随机抽样的方式划分训练集和测试集。
9、distinct
将数据源中重复的数据去重

10、coalesce
根据数据量缩减分区,用于大数据集过滤后,提高小数据集的执行效率,当spark中存在过多的小任务时候,可以通过coalesce方法,收缩合并分区,较小分区的个数,减小任务的调度成本。默认情况下 不会将现有分区的数据打乱重新按照规则组合。也可以扩大分区,但要设置shuffle参数为true,否则没有意义,不起作用
参数解释:第一个参数:表示将数据源缩小到几个分区
第二个参数:表示是否进行shuffle操作
11、repartition
等价于coalesce(shuffle=true)的操作,可以将分区通过shuffle进行扩大,也可以通过shuffle将分区缩小
12、sortBy
用于排序,在排序之前,可以将数据通过排序规则进行处理,之后将结果及逆行排序,默认为升序。排序之后新产生的RDD、分区数和原分区数一致,中间存在shuffle过程。底层有shuffle,将所有的数据全部重新排列,再进行分区
二、双value类型
1、交集
将两个数据源合在一起,但不进行去重操作 数据类型必须保持一致
2、并集
求两个数据源的公共部分 数据类型必须一致
3、差集
以一个RDD元素为主,去除两个RDD中重复元素,将其他元素保留下 数据类型保持一致
4、Zip
将两个 RDD 中的元素,以键值对的形式进行合并。其中,键值对中的 Key 为第 1 个 RDD 中的元素,Value 为第 2 个 RDD 中的相同位置的元素。
如果两个 RDD 数据类型不一致怎么办?
可以拉链,数据类型可以不一致,最后形成tuple
如果两个 RDD 数据分区不一致怎么办?
不能拉链,两个数据源要求分区数量要保持一致
如果两个 RDD 分区数据数量不一致怎么办?
不能拉链,两个数据源要求分区中数据数量保持一致(分区数一致,并且每个分区中的数据数量也要一致)
三、Key-value类型
1、partitionBy
将数据源按照指定的Partitioner 进行分区,spark默认的分区器是 HashPartitioner 。
如果重分区的分区器和当前 RDD 的分区器一样怎么办?
如果分区器的类型和数量完全一致,则不做二次分区
Spark 还有其他分区器吗?
HashPartitioner 、RangePartitioner
如果想按照自己的方法进行数据分区怎么办?
编写自己的分区器
2、reduceByKey
可以将数据按照相同的 Key 对 Value 进行聚合
3、groupByKey
将数据源的数据根据 key 对 value 进行分组 形成一个对偶元组
reduceByKey 和 groupByKey 的区别?
从 shuffle 的角度:reduceByKey 和 groupByKey 都存在 shuffle 的操作,但是 reduceByKey可以在 shuffle 前对分区内相同 key 的数据进行预聚合(combine)功能,这样会减少落盘的数据量,而 groupByKey 只是进行分组,不存在数据量减少的问题,reduceByKey 性能比较高。
从功能的角度:reduceByKey 其实包含分组和聚合的功能。GroupByKey 只能分组,不能聚合,所以在分组聚合的场合下,推荐使用 reduceByKey,如果仅仅是分组而不需要聚合。那么还是只能使用 groupByKey spark中。
Shuffle操作必须落盘(放入文件)处理,不能在内存中数据等待,会导致内存溢出,shuffle得操作性能非常低,因为要和磁盘交互而不是和内存交互reduceByKey 支持分区内预聚合功能,可以有效减少shuffle时落盘的数据量
4、aggregateByKey
将数据根据不同的规则进行分区内计算和分区间计算
第一个参数列表:需要传递一个参数,表示为初始值,主要用于碰见第一个key得时候,和value进行分区内计算
第二个参数列表:需要传递两个参数
第一个参数用于分区内计算
第二个参数用于分区间计算
aggregateByKey最终返回的数据结果应该和初始值的value类型保持一致,若分区内和分区间的计算规则相同,则使用foldByKey
5、foldByKey
当分区内计算规则和分区间计算规则相同时,aggregateByKey 就可以简化为 foldByKey
6、combineByKey
发现数据结构不满足要求时,可以让第一个数据转换结构。分区内和分区间计算规则不相同。
reduceByKey、foldByKey、aggregateByKey、combineByKey 的区别?
reduceByKey: 相同 key 的第一个数据不进行任何计算,分区内和分区间计算规则相同 FoldByKey: 相同 key 的第一个数据和初始值进行分区内计算,分区内和分区间计算规则相

AggregateByKey:相同 key 的第一个数据和初始值进行分区内计算,分区内和分区间计算规则可以不相同
CombineByKey:当计算时,发现数据结构不满足要求时,可以让第一个数据转换结构。分区内和分区间计算规则不相同。
7、Join
返回一个相同 key 对应的所有元素连接在一起形成一个tupl,不同数据源中 —>笛卡尔积,如果两个数据源中key没有匹配上,那么数据不会出现在结果中
8、leftOuterJoin
类似于 SQL 语句的左外连接
关于左外和右外 最明显的区别就是相同的key的value左右的位置
9、rightOuterJoin
类似于 SQL 语句的右外连接
10、cogroup
先对同一个数据源中的相同key进行分组,再对不同数据源中的相同key进行join连接

大数据技术之spark算子相关推荐

  1. 大数据技术之Spark(一)——Spark概述

    大数据技术之Spark(一)--Spark概述 文章目录 前言 一.Spark基础 1.1 Spark是什么 1.2 Spark VS Hadoop 1.3 Spark优势及特点 1.3.1 优秀的数 ...

  2. mllib逻辑回归 spark_大数据技术之Spark mllib 逻辑回归

    本篇教程探讨了大数据技术之Spark mllib 逻辑回归,希望阅读本篇文章以后大家有所收获,帮助大家对大数据技术的理解更加深入. 逻辑回归 逻辑回归其实是一个分类算法而不是回归算法.通常是利用已知的 ...

  3. 大数据技术,Spark核心技术之运行原理

    在大数据领域,只有深挖数据科学领域,走在学术前沿,才能在底层算法和模型方面走在前面,从而占据领先地位. Spark的这种学术基因,使得它从一开始就在大数据领域建立了一定优势.无论是性能,还是方案的统一 ...

  4. 05_大数据技术之Spark内核解析(1.1)

    1. Spark 内核概述 Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spa ...

  5. 大数据技术之Spark Streaming概述

    前言 数据处理延迟的长短 实时数据处理:毫秒级别 离线数据处理:小时 or 天 数据处理的方式 流式(streaming)数据处理 批量(batch)数据处理 spark Streaming也是基于s ...

  6. 编写一个脚本判断某个用户是否处在活动模式_大数据技术之Spark内核解析(二)Spark 部署模式...

    Spark支持3种集群管理器(Cluster Manager),分别为: 1. Standalone:独立模式,Spark原生的简单集群管理器,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他 ...

  7. 大数据技术之Spark(三) SparkStreaming

    文章目录 第1章 SparkStreaming 概述 1.1 Spark Streaming 是什么? 1.2 为什么要学习Spark Streaming(特点) 1.3 Spark Streamin ...

  8. 大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优

    侯亚南 数据技术处 支宸啸 数据技术处 在大数据计算中,我们可能会遇到一个很棘手的问题--数据倾斜,此时spark任务的性能会比预期要差很多:绝大多数task都很快执行完成,但个别task执行极慢或者 ...

  9. 大数据技术之_19_Spark学习_07_Spark 性能调优 + 数据倾斜调优 + 运行资源调优 + 程序开发调优 + Shuffle 调优 + GC 调优 + Spark 企业应用案例

    大数据技术之_19_Spark学习_07 第1章 Spark 性能优化 1.1 调优基本原则 1.1.1 基本概念和原则 1.1.2 性能监控方式 1.1.3 调优要点 1.2 数据倾斜优化 1.2. ...

  10. 尚硅谷大数据技术Spark教程-笔记02【SparkCore(核心编程,map、mapPartitions、mapPartitionsWithIndex、flatMap、glom、groupBy)】

    视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01[Spark(概述.快速上手.运行环境.运行架构)] 尚硅谷大数据技术Spark教 ...

最新文章

  1. Java项目:疫情人员流动管理系统(java+JSP+SSM+Springboot+maven+Mysql)
  2. 业界丨2018年能干大事儿的5家人工智能初创公司
  3. 模态框之Uncaught Error: Syntax error, unrecognized expression:
  4. 视觉SLAM总结——后端总结
  5. Shell脚本——基础语法
  6. Pytorch —— 损失函数(二)
  7. go 怎么等待所有的协程完成_Go语言中的sync.Cond 的特点与用法
  8. 选择在共享模式中运行时使用的采样频率和位深度_优化的逻辑(三)干扰相关及扫频仪的使用...
  9. Eclipse用法和技巧
  10. 用安卓手机看epub小说,哪些阅读器APP更好用?
  11. 融云php sdk下载安装,Laravel框架使用融云服务端SDK
  12. R语言IBM股票月对数收益率的Egarch模型
  13. tools-centos-基本配置
  14. 赣网杯2021 CTF---MiscWebCrypto部分Writeup
  15. 单频点单输入功率只含基波X模型的提取与验证
  16. win10 的计算机配置要求,win10的最低要求配置是什么_windows10系统最低电脑配置要求多少...
  17. 天成之作,踏云而来——“天成云”升级发布,领航企业云计算发展第三阶段
  18. 最新版IAR9.32和注册工具
  19. matlab将.mat数据文件转换成.dat/.txt数据文件
  20. 【小米春招】小米22届春招、23届实习生内推【全岗位】

热门文章

  1. (更新时间)2021年3月28日 python基础知识(装饰器)
  2. 瞬变电磁法的基本原理与TEM正演技术 (Matlab 实现)
  3. ACM-ICPC 2018 沈阳赛区网络预赛 D F I G K持续更新中
  4. 分享3款好用的电脑屏幕监控软件!
  5. 求大神解答 票据认证失败
  6. 计算机网络技术在一线城市,成都市3+2学校的计算机网络技术好
  7. java工程师个人简历模板下载,附面试题
  8. OsgEarth开发笔记(四):Qt5.15.2在QtCreator集成Osg3.6.3+OsgEarth3.1+OsgQt的vs2019x64版本开发环境搭建
  9. Aigtek功率放大器在压电双晶片动力学研究中的应用
  10. 【打开网页一片空白 可以上Q却不能上网】firefox无法在XXX找到该服务器的真相