Spark---RDD介绍

news2024/9/23 9:23:08

文章目录

  • 1.Spark核心编程
  • 2.RDD介绍
      • 2.1.RDD基本原理
      • 2.2 RDD特点
          • 1.弹性
          • 2.分布式 :数据存储在大数据集群的不同节点上
          • 3.数据集 :RDD封装了计算逻辑,并不保存数据
          • 4.数据抽象 :RDD是一个抽象类,具体实现由子类来实现
          • 5. 不可变:RDD封装了计算的逻辑,是不可以随意改变的,如果想要改变,则需要产生新的RDD,在新的RDD里面封装计算逻辑
          • 6. 可分区,并行计算:对读取进来的数据进行分区,之后将不同分区的数据发送给不同的Executor来处理。
      • 2.3 RDD核心属性
          • 2.3.1 分区列表
          • 2.3.2 分区计算函数
          • 2.3.3 RDD 之间的依赖关系
          • 2.3.4 分区器
          • 2.3.5 首选位置
      • 2.3 执行原理
  • 3.RDD基础编程
      • 3.1 RDD创建
          • 1.从集合(内存)中创建 RDD
          • 2.从外部存储(文件)创建 RDD
      • 3.2 RDD 并行度与分区

1.Spark核心编程

Spark为了能够进行高并发和高吞吐的数据处理,封装了三大数据结构,用于处理不同的应用场景。

RDD:弹性分布式数据集
累加器:分布式共享只写变量
广播变量:分布式共享只读变量

2.RDD介绍

RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是 Spark 中最基本的数据处理模型。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。简单的来说,RDD在程序中就是一个包含数据和逻辑的抽象类。RDD是一个最小计算单元。

2.1.RDD基本原理

IO原理:将数据读取成为字符

在这里插入图片描述

对WordCount案例进行分解,可以更好的帮助理解RDD。
在这里插入图片描述

RDD数据处理方式类似于IO流,也使用到了装饰者设计模式,它只有在执行了collect方法之后才会执行真正的业务逻辑操作,在之前全部都是对功能的扩展。
在IO中数据会被临时存储在缓冲区中,达到一定的阈值写出,但是在RDD中是不会临时存储数据的。
RDD的基本原理就是通过组合多个RDD来实现对功能的扩展。

注意;具体功能都是由RDD的子类来实现的

2.2 RDD特点

1.弹性

在这里插入图片描述

2.分布式 :数据存储在大数据集群的不同节点上
3.数据集 :RDD封装了计算逻辑,并不保存数据
4.数据抽象 :RDD是一个抽象类,具体实现由子类来实现
5. 不可变:RDD封装了计算的逻辑,是不可以随意改变的,如果想要改变,则需要产生新的RDD,在新的RDD里面封装计算逻辑
6. 可分区,并行计算:对读取进来的数据进行分区,之后将不同分区的数据发送给不同的Executor来处理。

在这里插入图片描述

2.3 RDD核心属性

2.3.1 分区列表

RDD 数据结构中存在分区列表,用于执行任务时并行计算,是实现分布式计算的重要属性。

2.3.2 分区计算函数

Spark 在计算时,是使用分区函数对每一个分区进行计算

2.3.3 RDD 之间的依赖关系

RDD 是计算模型的封装,当需求中需要将多个计算模型进行组合时,就需要将多个 RDD 建立依赖关系

2.3.4 分区器

当数据为 KV 类型数据时,可以通过设定分区器自定义数据的分区

2.3.5 首选位置

计算数据时,可以根据计算节点的状态选择不同的节点位置进行计算,即移动数据不如移动计算。

2.3 执行原理

Spark在数据处理的过程中需要计算资源,如内存、CPU和计算逻辑等。

Spark 框架在执行时,先申请资源,然后将应用程序的数据处理逻辑分解成一个一个的计算任务。然后将任务发到已经分配资源的计算节点上, 按照指定的计算模型进行数据计算。最后得到计算结果。在这里插入图片描述
2.Spark 通过申请资源创建调度节点和计算节点
在这里插入图片描述
3.Spark 框架根据需求将计算逻辑根据分区划分成不同的任务
在这里插入图片描述
4.调度节点将任务根据计算节点状态发送到对应的计算节点进行计算
在这里插入图片描述

3.RDD基础编程

3.1 RDD创建

1.从集合(内存)中创建 RDD
val rdd1 = sparkContext.parallelize(
 List(1,2,3,4)
)
val rdd2 = sparkContext.makeRDD(
 List(1,2,3,4)
)

其中makeRDD方法的底层就是实现了paralleize方法

2.从外部存储(文件)创建 RDD
val fileRDD: RDD[String] = sparkContext.textFile("input")

3.2 RDD 并行度与分区

默认情况下,Spark 可以将一个作业切分多个任务后,发送给 Executor 节点并行计算,而能够并行计算的任务数量我们称之为并行度。(cpu核数就是并行度) 这个数量可以在构建 RDD 时指定。

sparkContext.makeRDD(
 List(1,2,3,4),
 4)//设置并行度为4
val fileRDD: RDD[String] =
 sparkContext.textFile(
 "input",
 2)//设置并行度为2

读取内存数据时,数据可以按照并行度的设定进行数据的分区操作

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

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

相关文章

C语言实例_math.h库函数功能及其用法详解

一、前言 数学在计算机编程中扮演着至关重要的角色,C语言的math.h头文件提供了一系列的函数和工具,用于数学计算和常用数学函数的实现。这些函数包括数值运算、三角函数、指数对数函数等,为开发人员提供了强大的数学处理能力。本文将对math.…

字符编码转换

宽窄字符和字符编码的关系 多字节(窄)字符:在C/C中,char是一种数据类型,规定sizeof(char)1,即一个char占用一个字节,1Byte8bit。并没有规定一个char就要与ASCII对应,不过,通常情况下char值与AS…

LeetCode 每日一题 Day 32 ||递归单调栈

2487. 从链表中移除节点 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1: 输入:head [5,2,13,3,8] 输出:[13,8] 解释:需要移除的节点是 5 ,2 和 3 。…

【RocketMQ每日一问】RocketMQ SQL92过滤用法以及原理?

1.生产端 public class SQLProducer {public static int count 10;public static String topic "xiao-zou-topic";public static void main(String[] args) {DefaultMQProducer producer MQUtils.createLocalProducer();IntStream.range(0, count).forEach(i -&g…

【算法】使用位运算解算法题(C++)

文章目录 0. 位运算 基本介绍1. 位运算基本使用 连带题目191.位1的个数338.比特位计数461.汉明距离136.只出现一次的数字260.只出现一次的数字III 2. 使用位运算解决算法题面试题01.01.判定字符是否唯一371.两整数之和137.只出现一次的数字II面试题17.04.消失的数字面试题17.1…

2023年12月GESP C++七级编程题转Python真题解析

七、2023年12月GESP C(Python)七级编程题 2023年12月GESP Python最高六级,但C与Python同级编程题相同。本篇引用2023年12月GESPC七级编程题,用Python实现。 【七级编程题1】 【试题名称】:商品交易 时间限制:1.0 s 内存限制&…

上海AI lab大模型微调

教程链接:InternLM学习教程链接 命令行演示结果: web演示结果

SpringBoot的基础配置

问题导入 入门案例中没有引入spring-webmvc等依赖包,没有配置Tomcat服务器,为什么能正常启动?我们没有配置端口号,为什么端口是8080? 起步依赖 starter SpringBoot中常见项目名称,定义了当前项目使用的所…

TB-C/C++

1.main函数之前之后执行的代码 设置栈指针初始化静态变量和全局变量(.data段内容,已初始化且不为0)赋初值(.bss段内容,未初始化的全局变量和静态变量)传参(argc,argv)atexit() 在…

【C++】HP-Socket(一): 下载、Linux上编译、Windows远程编译Linux版本

1、简介 国产、高性能、跨平台网络通信框架。 作者于2024-01-01更新了Release版本v5.9.4,辛苦了,向作者致敬! 源码下载: https://gitee.com/mirrors/hp-socket https://github.com/ldcsaa/HP-Socket 2、编译 2.1 在Linux上编…

nifi详细介绍--一款开箱即用、功能强大可靠,可用于处理和分发数据的大数据组件

目录 目录 一、引言 二、NiFi 的历史背景介绍 三、NiFi 是什么? 核心特性 应用领域 四、NIFI 入门 五 、NiFi 工作流程 六、实际应用场景 七、优势总结 一、引言 NiFi(Apache NiFi),全名为“Niagara Files”&#xff0…

[SDCTF 2022]jawt that down!

[SDCTF 2022]jawt that down! 打开题目,存在登录框 初步测试发现并不存在sql注入漏洞,只好扫一下目录发现有/js的路径 我们进一步扫描 访问/js/login.js看一下,搜索得到用户名和密码 AzureDiamond hunter2登陆成功后发现有个N 点进去提示t…

mysql生成数据库字典文档

项目交付离不开项目数据库字典文档。下面用python轻松生成交付文档字典。 一 生成doc文档数据库字典效果: 1 生成doc文件,如下图: 2 打开文件字典格式内容 ,如下图: 二 python生成doc字典文档代码 生成doc数据库字典…

机器学习-基于Word2vec搜狐新闻文本分类实验

机器学习-基于Word2vec搜狐新闻文本分类实验 实验介绍 Word2vec是一群用来产生词向量的相关模型,由Google公司在2013年开放。Word2vec可以根据给定的语料库,通过优化后的训练模型快速有效地将一个词语表达成向量形式,为自然语言处理领域的应…

FA发放云桌面并与FC对接

(7)分配桌面(该组为刚刚创建的域名用户和组),确认无误,直接发放 (8)可在任务中心查看发放的进度 3、FA的登录流程 (1)登录WI:客户端访问VLB&…

Java解析xml文档,判断对象是一个json是jsonArray还是jsonObject

有一篇xml文档&#xff0c;如下&#xff1a; 现在需要解析出其中的内容&#xff0c;首先需要明确的是&#xff0c;文档是由一个个的标签嵌套形成的&#xff0c;例如整个xml文件是由许多DescriptorRecord标签构成&#xff0c; <DescriptorRecord DescriptorClass "1&…

【数据结构】二叉树(一)——树和二叉树的概念及结构

前言: 本篇博客主要了解什么是树&#xff0c;什么是二叉树&#xff0c;以及他们的概念和结构。 文章目录 一、树的概念及结构1.1 树的基本概念1.2 树的相关特征1.3 树的实现 二、二叉树的概念及性质2.1 二叉树的概念2.2 二叉树的性质 一、树的概念及结构 1.1 树的基本概念 树&…

用邮件及时获取变更的公网IP--------python爬虫+打包成exe文件

参考获取PC机公网IP并发送至邮箱 零、找一个发送邮件的邮箱 本文用QQ邮箱为发送邮箱&#xff0c;网易等邮箱一般也有这个功能&#xff0c;代码也是通用的。 第一步&#xff1a;在设置中找到账户&#xff0c;找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务&#xff0c;点击获…

2024.1.3每日一题

LeetCode每日一题 2487.从链表中移除节点 2487. 从链表中移除节点 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1&#xff1a; 输入&#xff1a;head [5,…

全国计算机等级考试| 二级Python | 真题及解析(10)

一、选择题 1.要实现将实数型变量a的值保留三位小数,以下python可以实现的是( ) A.a%0.001 B.a//0.001 C.round(a,3) D.round(3,a) 2.在Python中要交换变量a和b中的值,应使用的语句组是( )。 A…