22-31-spark-核心编程-RDD概念及理解

news2024/11/25 7:15:49

22-spark-核心编程-RDD概念:

分布式计算基础测试: big-data-study\Spark-demo\src\main\java\spark\core\com\zh\test02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFqQS2tw-1670771635691)(png/image-20210923204137911.png)]

Spark 核心编程

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

➢ RDD : 弹性分布式数据集

➢ 累加器:分布式共享只写变量

➢ 广播变量:分布式共享只读变量

java-io读写基本了解RDD

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxQ5cvGi-1670771635693)(png/image-20210923210629235.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DgPG95kG-1670771635693)(png/image-20210923210741863.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wcL9y4VS-1670771635694)(png/image-20210923224728454.png)]

Spark-RDD和IO之间的关系(将最小单元通过组合形成一个)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D93Akmc0-1670771635694)(png/image-20210926193355883.png)]

什么是 RDD

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

➢ 弹性

​ 存储的弹性:内存与磁盘的自动切换;

​ 容错的弹性:数据丢失可以自动恢复;

​ 计算的弹性:计算出错重试机制;

​ 分片的弹性:可根据需要重新分片(类似hadoop中的分区)。

➢ 分布式:数据存储在大数据集群不同节点上

➢数据集:RDD 封装了计算逻辑,并不保存数据

➢ 数据抽象:RDD 是一个抽象类,需要子类具体实现

➢ 不可变:RDD 封装了计算逻辑,是不可以改变的,想要改变,只能产生新的 RDD,在新的 RDD 里面封装计算逻辑

➢ 可分区、并行计算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SB54v60a-1670771635695)(png/image-20210924102705832.png)]

核心五大属性

 * Internally, each RDD is characterized by five main properties:
 *
 *  - A list of partitions  分区列表:RDD 数据结构中存在分区列表,用于执行任务时并行计算,是实现分布式计算的重要属性。
 protected def getPartitions: Array[Partition]
 
 *  - A function for computing each split 分区计算函数:Spark 在计算时,是使用分区函数对每一个分区进行计算
  @DeveloperApi
  def compute(split: Partition, context: TaskContext): Iterator[T]
  
 *  - A list of dependencies on other RDDs  RDD 之间的依赖关系:RDD 是计算模型的封装,当需求中需要将多个计算模型进行组合时,就需要将多个 RDD 建立依赖关系
 protected def getDependencies: Seq[Dependency[_]] = deps
 
 *  - Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned) 分区器:当数据为 KV 类型数据时,可以通过设定分区器自定义数据的分区
 @transient val partitioner: Option[Partitioner] = None
 
 *  - Optionally, a list of preferred locations to compute each split on (e.g. block locations for
 *    an HDFS file)  首选位置:计算数据时,可以根据计算节点的状态选择不同的节点位置进行计算
 protected def getPreferredLocations(split: Partition): Seq[String] = Nil

执行原理

数据处理过程中需要计算资源(内存 & CPU)和计算模型(逻辑)。执行时,需要将计算资源和计算模型进行协调和整合。

Spark 框架在执行时,先申请资源,然后将应用程序的数据处理逻辑分解成一个一个的计算任务。然后将任务发到已经分配资源的计算节点上, 按照指定的计算模型进行数据计算。最后得到计算结果。

RDD 是 Spark 框架中用于数据处理的核心模型,接下来我们看看,在 Yarn 环境中,RDD的工作原理:

  1. 启动 Yarn 集群环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LQ9u7Fxe-1670771635695)(png/image-20210924135700961.png)]

2、Spark 通过申请资源创建调度节点和计算节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I9QEYWzH-1670771635696)(png/image-20210924135727191.png)]

3、Spark 框架根据需求将计算逻辑根据分区划分成不同的任务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5u0oC2Um-1670771635696)(png/image-20210924135750302.png)]

  1. 调度节点将任务根据计算节点状态发送到对应的计算节点进行计算

在这里插入图片描述

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

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

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

相关文章

vscode 离线安装ssh

首先打开官方插件地址:https://marketplace.visualstudio.com/VSCode 然后输入ssh 下载这两个插件: 安装这两个插件: 这样便在windows下安装成功了ssh。 接下来需要在服务器端进行配置。 首先查看windows上的vscode版本: 这…

Arduino 崩溃或挂起的 7 种方式及如何防止

Arduino 崩溃或挂起的 7 种方式(以及如何防止它发生) 作者:Chris in Arduino 查看原文 为了帮助防止Arduino崩溃或挂起,我进行了一系列实验,以确定Arduino崩溃,挂起,重置,冻结&am…

5.大型电商项目之创建前端展示模板并调用

1. templates前端模板的使用 1.1 templates前端模板的创建 首先,我们页面很多地方是相似的,这里就创建一个基础模板,不同的地方,对模板内容的block进行修改即可;对于相同的地方,我们就使用include包含即可…

B. Hossam and Friends #837 div2

Problem - B - Codeforces 题意就是给你m个数对,这两个人不是好朋友,其他的所有人都是好朋友,问1~n里面有多少个区间里面所有数都是好朋友 分析: 这题我分析的没错,但是在计算区间的时候,想的复杂了,用模…

JS中,a标签里的javascript:;和 javascript:void(0)还有##

目录 1. javascript:;【常用】点击链接之后不会刷新页面,不会跳转链接,也不会传递参数 2. javascript:void(0) 【少用】点击链接后不会刷新页面,不会跳转链接,也不会传递参数 3. a标签中的# 点击链接后会刷新页面…

Spring Batch批处理-作业Job简介

引言 书接上篇Spring Batch 批处理入门案例解析,上篇带小伙伴们写了一个Spring Batch 入门案例解析,本篇就开始批处理正文啦,今天先对作业Job做个全面了解。 作业介绍 目前很多项目都流程的概念,比如web应用,集成应…

Java基础03_数据类型

数据类型 强类型语言 要求变量的使用要严格符合规定,所有的变量必须先定义后使用;安全性高但是速度低; 弱类型语言 例如:‘12’ 3 123 或者 ‘12’ 3 ‘123’ 在强类型语言中是有明显的区别的。而在弱类型语言中是不区分的…

算符优先分析器的构造

一、实验目的 (1)理解自底向上的语法分析的基本思想。 (2)理解算符优先文法的概念。 (4)掌握算符优先分析器的工作原理和工作流程。 (3)掌握算符分析表和优先函数的构造。 二、实验…

函数式接口

Lambda表达式的本质:作为函数式接口的实例 如果一个接口中,只声明一个抽象方法,则此接口就称为函数式接口 FunctionalInnterface public interface MyInterface{void method1(); }要想用Lambda表达式就一定要在函数式接口的条件下使用 相当于…

微信小程序直播状态接口如何获取

现如今,小程序直播非常的红火,越来越多的商家开通了微信小程序直播,但是在直播的过程中,偶尔会出现一些小问题,如禁播,异常状态等等,下面小编就来介绍一下微信小程序直播状态接口如何获取。 一、…

echarts5.4立体柱状图

资源下载&#xff1a;https://www.jsdelivr.com/package/npm/echarts 效果图&#xff1a; 借鉴资源&#xff1a;echarts 如何绘制三维 3D 立体柱状图 - 简书 代码示例&#xff1a; <!DOCTYPE html> <head><meta charset"utf-8"><title>ECh…

基于51单片机的智能小车系统设计

原理图&#xff1a; 程序运行图&#xff1a; 部分程序&#xff1a; /******************************************************************************* * 文件名称&#xff1a;main.c * 说明&#xff1a;本文件为小车控制的主函数 * 功能&…

分布式websocket探索

单体式架构 根据基于golang的gin框架开发的web项目所展开 如果一个Web项目采用单体式架构且配备了websocket通讯的功能&#xff0c;那么在单个实例中是能够正常运行的 在我的项目中&#xff0c;用户可以通过websocket来进行实时通讯和实时消息通知&#xff0c;同时如果在web业务…

AcrelEMS-IDC数据中心综合能效管理系统解决方案-Susie 周

1、概述 安科瑞电气紧跟数据中心发展形式&#xff0c;推出AcrelEMS-IDC数据中心综合能效管理解决方案&#xff0c;包含有电力监控、动环监控、消防监控、能耗统计分析、智能照明控制以及新能源监测几个子系统。集成了变配电监测、电源备自投、电气接点测温、智能照明控制、电能…

yearning搭建及使用

yearning搭建及使用 数据库审计管理&#xff0c;是数据安全规范中不可或缺的一环&#xff0c;通过审计管理我们能够把控、追溯sql执行情况。yearning作为一款开源的数据库审计软件&#xff0c;是我们开发运维工作中经常打交道的一个“伙伴”。 yearning提供的核心功能就是sql…

mysql 自增字段、属性

mysql自增属性 参考文章 https://www.php.cn/mysql-tutorials-489209.html https://blog.csdn.net/qq_41045806/article/details/108310772 在Mysql中&#xff0c;可以为某一属性设置自增属性&#xff0c;可以很好地为我们解决属性值重复的问题。 在mysql中&#xff0c;使用au…

DevExpress Universal全面的软件开发包

DevExpress Universal全面的软件开发包 DevExpress Universal帮助您使用所有DevExpress单平台控件等为Windows、Web、移动和平板电脑构建应用程序。它包括桌面控件(WinForms、WPF、UWP和桌面报告)、Web控件(ASP.NET、ASP.NET MVC和Core、Bootstrap Web Forms、JavaScript-jQuer…

第十章用Python获取sqlite、MySQL、Excel、csv、json中的数据

这里写目录标题项目背景获取sqlite3中的数据sqlite3库获取sqlite数据pandas库获取sqlite数据获取MySQL中的数据pymsql库获取MySQL数据pandas库获取mysql数据获取Excel中的数据xlrd库获取Excel数据pandas库获取Excel数据获取csv中的数据csv库读取csv数据pandas读取csv数据获取js…

Docker02(数据卷)

目录 一、宿主机与容器之间的文件拷贝 二、数据卷 三、数据卷容器 四、Dockerfile Dockerfile简介 自定义centos&#xff0c;具备vim及ifconfig作用 自定义tomcat8 一、宿主机与容器之间的文件拷贝 在生产环境中使用 Docker &#xff0c;往往需要对数据进行持久化&#…

Spring Cloud微服务治理框架深度解析

在学习一个技术之前&#xff0c;首先我们要了解它是做什么的&#xff0c;我们为什么要用它。不然看再多资料都理解不了&#xff0c;因此我们先来讲解下Spring Cloud Spring Cloud是一套微服务治理框架&#xff0c;几乎考虑到了微服务治理的方方面面。那么接下来具体说下 Spring…