首页 > 其他分享 >【大数据学习 | Spark-Core】RDD的五大特性(包含宽窄依赖)

【大数据学习 | Spark-Core】RDD的五大特性(包含宽窄依赖)

时间:2024-11-24 20:32:26浏览次数:6  
标签:Core 缓存 RDD 分区 rdd 依赖 计算 算子 Spark

分析一下rdd的特性和执行流程

  • A list of partitions 存在一系列的分区列表
  • A function for computing each split 每个rdd上面都存在compute方法进行计算
  • A list of dependencies on other RDDs 每个rdd上面都存在一系列的依赖关系
  • Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned) 在k-v类型的rdd上面存在可选的分区器
  • Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file) 优先位置进行计算

1. rdd的第一大特性:存在一系列的分区列表

每个rdd都存在一系列的分区列表,rdd弹性分布式数据集,必须是存在分区的,因为存在分区才会让集群多个线程进行执行,并行操作速度和效率更快。

分区可以进行调节,shuffle类算子可以修改分区,coalesce算子和repartition算子,修改分区在一定程度上可以增加计算效率,一个阶段中的一个rdd的分区代表的是一个task任务,并且在读取hdfs文件的时候,一个block块对应的是一个分区,让数据的计算本地化执行

2. rdd的第二大特性:每个rdd上面都存在compute方法进行计算

rdd是调用算子进行计算的,一个元素一个元素的进行计算,compute帮助进行递归rdd的数据使用用户定义的逻辑进行计算。

我们compute方法是如何遍历RDD中的元素的。

如果是缓存了,那么从缓存中读取数据 getOrCompute

如果设置了缓存,并且已经有人计算完毕放入到缓存中了,那么直接从缓存中取值,如果缓存中没有值,我们需要计算并且存储到缓存中。

读取数据,如果命中就直接返回,如果没有命中就计算。

获取缓存数据

没有获取到数据需要进行计算,放入到缓存中,在从缓存中读取数据

doPutIterator 存储数据到缓存中,判断存储级别,分别放入数据到缓存或者磁盘中并且对数据进行备份和副本。

然后当放入完毕以后再次从缓存中读取数据。

3. rdd的第三大特性:每个rdd上面都存在一系列的依赖关系

rdd之间存在一系列的依赖关系。

所说的依赖关系就是rdd之间的关系,依赖关系就是算子的关系,转换类算子的关系,比如调用的算子不同关系也不相同。

map flatMap mapPartitions filter 一对一的关系,窄依赖

groupBy sortBy groupByKey sortByKey reduceBykey 他们都是带有shuffle的算子,都会产生宽依赖

shuffle就是宽依赖,非shuffle的算子就是窄依赖。

shuffleDependency:宽依赖

narrowDependency:窄依赖

窄依赖分为三种:

oneToOne 一个对一个的关系 map FlatMap filter...
rangeDependency: union范围依赖
pruneDependency: filterByRange 子类关系,父节点的部分数据被子节点继承了,排序完毕的结果被子节点继承一部分

宽依赖的关系

窄依赖的关系

map算子中的依赖关系

union算子

filterByRange

4. rdd的第四大特性:在kv类型的rdd上面存在可选的分区器。

首先rdd上面是不存在分区器的,只有调用了shuffle类算子才会有分区器默认的分区器HashPartition[分组],rangePartitioner[排序]。

同样我们可以人为自定义分区器,但是不管是人为的还是系统自带的都需要在Key进行处理,需要实现两个方法:一个是分区的数量,numPartitions,一个是getPartition,怎么计算得到分区id。

不是kv类型的rdd肯定没有分区器,kv类型的rdd上面不一定存在分区器,分区器可以规定数据的流向,上游的数据到下游的相应的分区中是可以定义规则的

5. rdd的第五大特性:优先位置进行计算

一般数据的切片大小和block块的大小是一一对应的,可以实现本地化执行操作,避免了远程io。

读取hdfs的文件切片计算逻辑中就可以找到。

每次形成切片的时候都带有block的域名信息,处理和计算的时候就可以直接找到地址,按照本地化进行执行。

标签:Core,缓存,RDD,分区,rdd,依赖,计算,算子,Spark
From: https://blog.csdn.net/2301_80912559/article/details/143999258

相关文章

  • spark 写入mysql 中文数据 显示?? 或者 乱码
    目录前言Spark报错:解决办法:总结一下:报错:解决:前言用spark写入mysql中,查看中文数据显示??或者乱码Spark报错:SatNov2319:15:59CST2024WARN:EstablishingSSLconnectionwithoutserver'sidentityverificationisnotrecommended.AccordingtoMySQL5.......
  • 在 ASP.NET Core 中创建 gRPC 客户端和服务器
    前言gRPC是一种高性能、开源的远程过程调用(RPC)框架,它基于ProtocolBuffers(protobuf)定义服务,并使用HTTP/2协议进行通信。新建项目新建解决方案GrpcDemo新建webapi项目GrpcServer作为grpc服务端项目添加包<PackageReferenceInclude="Grpc.AspNetCore"Version="2.67.......
  • 代谢组数据分析(二十二):Zscore标准化后主成分分析(PCA)及热图展示
    禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者!文章目录介绍Z-score标准化主成分分析(PrincipalComponentAnalysis,PCA)加载R包数据下载导入数据数据预处理填补缺失值Zscore标准化PCA分析热图展示代谢物聚类簇小提琴图聚类......
  • afcore.dll文件丢失影响Omega Strikers运行?Omega Strikers玩家必看afcore.dll文件丢失
    在沉浸于OmegaStrikers这款快节奏、竞技性强的游戏时,突然遭遇afcore.dll文件丢失的问题,无疑会给玩家带来不小的困扰。这一关键文件的缺失,可能导致游戏无法正常启动、运行卡顿,甚至频繁崩溃,严重影响游戏体验。然而,面对这一挑战,玩家无需过度焦虑,因为通过一系列自救措施,你完全有能......
  • 计算机毕业设计Python+Spark知识图谱课程推荐系统 课程用户画像系统 课程大数据 课程
    《Python+Spark知识图谱课程推荐系统》开题报告一、研究背景与意义随着互联网技术的快速发展,在线教育平台已成为人们获取知识、提升技能的重要途径。然而,面对海量的课程资源,用户往往难以快速找到符合自己兴趣和需求的课程。传统的课程推荐系统大多基于简单的规则或统计方法,难......
  • Spark实现PageRank算法
    详细步骤:1、创建Sparksql环境2、读取数据3、数据切分(分为page列,outLink列)形成表pageDF4、新增pr一列 (给定初始值)  形成表initPrDF5、新增avgPr一列(根据出链关系,求每个页面所分到的Pr)6、分组聚合(将outLink列explode炸开,在按照page分组,然后sum求和,这就是表......
  • .net core web api授权、鉴权、API保护
    前言本文整理asp.netcorewebAPI的授权、鉴权以及注册验证、API保护一系列常用技术手段。本文所有的实现代码可以参考:https://gitee.com/xiaoqingyao/web-app-identity.git用户管理授权和鉴权的前提是要有一个用户管理模块,.net提供一个现有的Identity组件,帮我们完成了大部......
  • .NET Core SqlSugar
    概念:1.官方文档:https://www.donet5.com/Home/Doc?typeId=11802.在vsstudio中导包SqlSugarCore创建模型类:1.vsstudio2022中选择项目2.选择6.03.projram.csusingSqlSugar;varbuilder=WebApplication.CreateBuilder(args);//Addservicestothecontain......
  • ASP.NET Core PDF viewers components Crack
    ASP.NETCorePDFviewerscomponentsCrackASP.NETCorePDFviewerscomponentswithformfillingsupportletusersdirectlycomplete,edit,andsubmitdatawithinPDFforms.TheabilitytoreadandwriteformfieldsinaPDFviewercomponenten......
  • ef core migrations 创建新的迁移程序
    EFCoreMigrations创建一个WebAPI.Migrationsdotnetnewwebapi-nWebAPI.MigrationsProgram.csusingSystem.Reflection;usingMicrosoft.Extensions.DependencyInjection;usingMicrosoft.EntityFrameworkCore;usingMicrosoft.Extensions.Configuration;usingDataA......