Spark RDD 介绍

news2024/9/17 3:21:17

什么是 RDD ?

弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合;

特性

  • 弹性:
    存储弹性:内存与磁盘的自动切换;
    容错弹性:数据丢失可以自动恢复;
    计算弹性:计算出错有重试机制;
    分片弹性:可根据需要重新分片;
  • 分布式:数据存储在大数据集群不同节点上;
  • 数据集:RDD 封装了计算逻辑,并不保存数据;
  • 数据抽象:RDD 是一个抽象类,需要子类具体实现;
  • 不可变:RDD 封装了计算逻辑,是不可改变的,想要改变,只能产生新的 RDD,在新的 RDD 里面封装计算逻辑;
  • 可分区、并行计算:对读取进来的数据进行分区,之后将不同分区的数据发送给不同的 Executor 来处理;

工作原理

1、启动 Yarn 集群;
在这里插入图片描述
2、Spark 通过申请资源创建调度节点和计算节点;

在这里插入图片描述
3、Spark 根据需求将计算逻辑根据分区划分成不同的任务;
在这里插入图片描述
4、调度节点将任务根据计算节点状态发送到对应的计算节点进行计算;
在这里插入图片描述
从以上流程可以看出 RDD 在整个流程中主要用于将逻辑进行封装,并生成 Task 发送给 Executor 节点执行计算;

RDD 依赖关系

RDD 血缘关系

Spark 的所有算子都是基于 RDD 来执行的,不通的场景会有不同的 RDD 实现类,但是都可以进行相互转换。RDD 在执行过程中会生成 DAG 图,然后形成 Lineage(血统),RDD 的 Lineage 会记录 RDD 的元数据和转换行为,当该 RDD 的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区,保证容错性;

依赖关系

两个相邻 RDD 之间的关系;

窄依赖

指父 RDD 的每个分区只能被一个子 RDD 分区使用,子 RDD 分区通常对应常数个父 RDD 分区;
例如:map()、filter()、union()、join() 等操作都会产生窄依赖;
在这里插入图片描述

为什么设计窄依赖?
窄依赖的多个分区可以并行计算;
窄依赖如果丢失一个分区的数据,只需要重新计算对应的分区数据;

宽依赖

即 shuffle 依赖,指父 RDD 的每个分区都可能被多个子 RDD 分区使用,子 RDD 分区通常对应所有的父 RDD 分区;
例如:groupByKey()、reduceByKey()、sortByKey() 等操作都会产生宽依赖;
在这里插入图片描述
为什么设计宽依赖?
划分 Stage 的依据,对于宽依赖,必须等到上一阶段的计算完成才能计算下一阶段;

RDD 的缺陷

  • 不支持细粒度的写和更新操作:Spark写数据是粗粒度的,所谓粗粒度就是批量写入数据,目的是为了提高效率,但是Spark读数据是细粒度的,也就是一条一条读;
  • 不支持增量迭代计算;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1951948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS 7.x 的 YUM 仓库问题

背景 CentOS Linux 7 的生命周期(EOL)已经于 2024 年 6 月 30 日终止这意味着 CentOS 7.x 的官方镜像站点将不再提供服务,导致在使用 yum 安装或更新程序时可能会遇到 错误。本文将介绍如何解决这一问题,使得你可以继续在 CentOS…

实验八: 彩色图像处理

目录 一、实验目的 二、实验原理 1. 常见彩色图像格式 2. 伪彩色图像 3. 彩色图像滤波 三、实验内容 四、源程序和结果 (1) 主程序(matlab (2) 函数FalseRgbTransf (3) 函数hsi2rgb (4) 函数rgb2hsi (5) 函数GrayscaleFilter (6) 函数RgbFilter 五、结果分析 1. …

shell脚本相关应用

编写一个简单的脚本,以及运行脚本 301 vim helloworld.sh #!/bin/bash echo "hello world!" ls -lh /etc/ 执行的方式如下: 302 bash helloworld.sh 303 sh helloworld.sh 304 chmod x helloworld.sh 305 ./helloworld.sh…

【计算机网络】数据链路层实验

一:实验目的 1:学习WireShark软件的抓包操作,分析捕获的以太网的MAC帧结构。 2:学习网络中交换机互相连接、交换机连接计算机的拓扑结构,理解虚拟局域网(WLAN)的通信机制。 3:学习…

stm32入门-----TIM定时器(输入捕获模式——下)

目录 前言 一、C语言编程初始化步骤 1.开启时钟 2.配置GPIO口 3.配置时基单元 4.配置输入捕获单元(主模式) 5.配置触发源于从模式 6.开启定时器 二、项目实操(测周法) 1.定时器测量方波 2.定时器测量方波的占空比 前言 接…

nginx的学习(二):负载均衡和动静分离

简介 nginx的负载均衡和动静分离的简单使用 负载均衡配置 外部访问linux的ip地址:80/edu/a.html地址,会轮询访问Tomcat8080和Tomcat8081服务。 Tomcat的准备 准备两个Tomcat,具体准备步骤在nginx的学习一的反向代理例子2中,在Tomcat8080…

搜索引擎项目构建与解析(一)

这是源码,大家可以下载下来作为参考,一起食用效果更佳:SearchEngine 王宇璇/submit - 码云 - 开源中国 (gitee.com)https://gitee.com/yxuan-wang/submit/tree/master/SearchEngine搜索引擎项目总体来看内容比较简单,代码量也比较…

【计算机方向】五本“三区水刊”重磅推荐!几乎不拒收,国人发文友好!

本期将为您带来五本计算机SCI 妥妥毕业神刊! AUTONOMOUS AGENTS AND MULTI-AGENT SYSTEMS International Journal on Document Analysis and Recognition COMPUTATIONAL INTELLIGENCE IET Biometrics ACM Transactions on Asian and Low-Resource L…

linux系统安装pytorch_中文地址命名实体识别案例

命名实体有关文章参考这篇文章 中文地址命名实体识别训练和预测 win10系统安装cuda环境参考这篇文章 搭建Pytorch的GPU环境超详细 1、下载python https://www.python.org/downloads/release/python-368/ 2、下载python包 https://pypi.org/search/?q=transformers 1、搜…

物联网主机 E6000:智慧应急领域的创新力量

在当今瞬息万变的世界中,突发事件和紧急情况时有发生。如何迅速、准确地应对这些挑战,保障人民生命财产安全,成为了社会发展的重要课题。而物联网主机 E6000 的出现,为智慧应急领域带来了全新的解决方案。 一、强大的性能与功能 物…

opencv使用KCF算法跟踪目标,给出目标中心位置

效果图 代码 import cv2class VideoTracker:def __init__(self, video_path: str):self.video_path video_pathself.cap cv2.VideoCapture(video_path)self.tracker cv2.legacy.TrackerKCF_create()self.initBB Noneself.tracker_initialized Falseself.selecting Fals…

如何进行小程序的调试

Errno错误码 在使用部分小程序 API / 组件时,抛出的异常(fail 回调 / Promise reject)Error 对象中除了带有 errMsg,还会带有通用错误码 errno。 代码示例 wx.openBluetoothAdapter({success (res) {console.log(res)}fail (er…

时间序列分析方法之 -- 指数平滑(Exponential Smoothing)

目录 原理 适用情况 Python 示例代码 结论 原理 指数平滑(Exponential Smoothing)是一种用于时间序列分析和预测的平滑技术。与简单移动平均(SMA)和加权移动平均(WMA)不同,指数平滑通过对最…

VS+opencv+环境配置

下载opencv库。 版本 - OpenCV 下载完了是一个exe文件,(可以更换目录)直接双击,也就是压缩。 vs配置: 调试-调试属性 点编辑,加入这两个,路径根据自己的opencv库 3、链接器 测试:…

《Java初阶数据结构》----8.<java对象的比较总结>

目录 前言 一、Java对象的比较 1.1基本类型的比较 1.2 对象比较的问题(与equals) 1.3对象的比较 (三种常用方式) 1.重写equals方法 2.基于Comparble接口类的比较 3.基于比较器比较(Comparator接口) …

如何在网站嵌入可填写的PDF表单:2024巴黎奥运会赛程

如何将可填写的 PDF 表单嵌入您的网页?访问者无需下载或注册即可查看并填写。 简单!本文以2024巴黎奥运会赛程表单为例,演示如何将其嵌入网页中。您可以在 ONLYOFFICE 表单库免费获取该模板,有白色和紫色两种背景设计。 如何在网站…

uniapp中出现图片过小会与盒子偏离

结论&#xff1a;在image的父盒子中加上display: flex&#xff0c;原因不清楚 出问题的代码和图片如下&#xff1a; <template><view style" background-color: greenyellow; height: 10rpx;width: 10rpx;"><image :src"imgSrc.seatnull" …

UCOS-III 任务调度锁定/解锁接口OSSchedLock/Unlock详解

在实时操作系统中&#xff0c;任务调度是系统实现多任务并发执行的核心机制。但在某些场景下&#xff0c;我们需要临时关闭任务调度&#xff0c;以确保某段代码在执行过程中不被打断。下面将详细介绍这两个接口的应用场景及实现原理。 1. 关闭调度的应用场景 关闭任务调度的主要…

Windows环境下部署本地大模型教程

自ChatGPT在2022年爆发式出圈以来&#xff0c;大模型对人类世界产生了重大影响&#xff0c;无论是在生产、工作、写作方面还是自动驾驶领域&#xff0c;大模型发挥了非常重要的作用。 现各大厂&#xff0c;无论是国内大厂还是国外大厂&#xff0c;都纷纷推出了自己的对话大模型…

服务暴露 traefik

一。traefik 部署 前置资源 还是那个网站&#xff0c;这里复制 entryPoints&#xff0c;进入traefik的大门 可选在哪台机器上部署 traefik 部署 用 Daemonset 的方式是为了&#xff0c;加机器到集群后&#xff0c;能自动部署traefik 到目标机器 注意 8084端口 必须加…