图解大数据 | 基于Spark RDD的大数据处理分析

图解大数据 | 流式数据处理-Spark Streaming Spark Streaming是Spark核心API的一个扩展,可以实现实时数据的可拓展,高吞吐量。本文讲解Spark Streaming的架构、作业提交和工作原理,以及DStream的创建、转换和Graph,并通过案例代码展示应用的细节。 阅读详情

作者:韩信子@ShowMeAI
教程地址:http://www.showmeai.tech/tutorials/84
本文地址:http://www.showmeai.tech/article-detail/174
声明:版权所有,转载请联系平台与作者并注明出处

收藏ShowMeAI查看更多精彩内容


1.RDD介绍

要掌握基于Spark的大数据处理操作,大家首先要了解Spark中的一个核心数据概念:RDD。

1)RDD介绍

RDD,全称为Resilient Distributed Datasets(弹性分布式数据集合),是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。

Spark操作; 基于RDD的大数据处理分析; RDD介绍; 8-1

RDD(弹性分布式数据集合)是Spark的基本数据结构,Spark中的所有数据都是通过RDD的形式进行组织。

  • RDD是不可变的数据集合,每个分区数据是只读的。
  • RDD数据集要做逻辑分区(类似hadoop中的逻辑切片split),每个分区可以单独在集群节点进行计算。
  • RDD数据集中的数据类型可以包含任何java类型、scala类型、python类型或者自定义的类型。
  • RDD擅长的领域:迭代式的数据处理,比如机器学习。

2)RDD的5个属性

每个RDD有5个主要的属性:

  • 一组分片(partition),数据集的基本组成单位。
  • 一个函数,计算每个分片。
  • 对parent RDD的依赖,描述RDD之间的lineage。
  • 一个Partitioner,对于key-value的RDD。
  • 一个列表,存储存取每个partition的preferred位置。例如对于一个HDFS文件来说,存储每个partition所在的块的位置。

Spark操作; 基于RDD的大数据处理分析; RDD介绍; RDD的5个属性; 8-2

3)RDD与Spark任务

在Spark分布式数据处理任务中,RDD提供数据,供任务处理。很多时候hadoop和Spark结合使用:hadoop提供hdfs的分布式存储,Spark处理hdfs中的数据。

我们以 sc.textFile("hdfs://path/to/file") 形式生成RDD时,Spark就已经算好了数据的各个切片(也叫分区),并把分区信息放在了一个列表(名单)里,这个名单就属于RDD自带的其中一个属性。

  • RDD不包含实际要处理的数据,而是在RDD中的分区名单中载明切片的信息。

  • 数据已经在Hadoop的数据节点上了,只要在RDD中标明分区对应的数据所在位置、偏移量、数据长度即可,就类似元数据。

RDD在被分发到每个执行计算的任务节点后,每个任务节点会根据元数据信息获取自身节点负责计算的分区数据,并把数据放到本节点的内存当中,然后对数据进行计算。

  • 每个分区由一个节点来计算,换句话说就是每个任务只计算RDD的其中一个分区。

一般我们会把数据所在的节点和Spark的计算节点配成同一个主机,这样就实现了数据本地化。

  • 在worker节点将要运行Spark的计算任务时,只需要从本地加载数据,再对数据运用Spark的计算函数,就不需要从别处(例如远程主机)通过网络传输把需要计算的数据拿过来,从而避免了昂贵的网络传输成本。“宁可移动函数,也不要移动数据”。

2.RDD创建方式

1)创建RDD的3种方式

RDD的3种创建方式如下图所示(以pyspark代码为例):

Spark操作; 基于RDD的大数据处理分析; RDD创建方式; 创建RDD的3种方式; 8-3

2)从外部数据创建RDD

spark也支持从多种外部数据源读取数据,包括HDFS、S3、Hbase、MongoDB等,如下图所示:

Spark操作; 基于RDD的大数据处理分析; RDD创建方式; 从外部数据创建RDD; 8-4

3.RDD广播与累加器

1)共享变量

在Spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的是这个函数所用变量的一个独立副本。
这些变量会被复制到每台机器上,并且这些变量在远程机器上的所有更新都不会传递回驱动程序。

通常跨任务的读写变量是低效的,但是,Spark还是为两种常见的使用模式提供了两种有限的共享变量:

  • 广播变量(broadcast variable)
  • 累加器(accumulator)

2)广播变量

为什么要将变量定义成广播变量?

Spark操作; 基于RDD的大数据处理分析; RDD广播与累加器; 广播变量图解; 8-5

在分布式计算中,由Driver端分发大对象(如字典、集合、黑白名单等),一般,如果这个变量不是广播变量,那么每个task就会分发一份。在task数目十分多的情况下,Driver的带宽会成为系统的瓶颈,而且会大量消耗task服务器上的资源。

如果将这个变量声明为广播变量,那么知识每个executor拥有一份,这个executor启动的task会共享这个变量,节省了通信的成本和服务器的资源

3)累加器

为什么要将变量定义为累加器?

Spark操作; 基于RDD的大数据处理分析; RDD广播与累加器; 累加器图解; 8-6

在Spark应用程序中,异常监控、调试、记录符合某特性的数据数目,这些需求都需要用到计数器。

如果变量不被声明为累加器,那么被改变时不在Driver端进行全局汇总。即在分布式运行时每个task运行的只是原始变量的一个副本,并不能改变原始变量的值。

但是,当这个变量被声明为累加器后,该变量就会有分布式计数的功能。

4.RDD transformation与action

要对大数据进行处理,我们需要使用到一系列Spark RDD上可以变换与操作的算子,我们来重点理解一下spark的RDD transformation和action。

1)transformation与action

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; transformation与action; 8-7

transformation操作针对已有的RDD创建一个新的RDD。

  • 例如,map就是一种transformation操作。它用于将已有RDD的每个元素传入一个自定义的函数,并获取一个新的元素,然后将所有新元素组成一个新的RDD。

action主要是对RDD进行最后的操作(如遍历、reduce、保存到文件等),并可以返回结果给Driver程序。

  • 例如,reduce就是一种action操作。它用于对RDD中的所有元素进行聚合操作,并获取一个最终的结果,然后返回给Driver程序。

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; transformation与action; 8-8

2)高频RDD算子图解

map与flatMap

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; map&flatMap; 8-9

filter与distinct

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; filter&distinct; 8-10

sort与sortBy

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; sort&sortBy; 8-11

sample与takeSample

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; sample&takeSample; 8-12

union与intersection

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; union(+)&intersection; 8-13

groupby与cartesian

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; groupBy&cartesian; 8-14

join与glom

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; join&glom; 8-15

collect与reduce

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; collect&reduce; 8-16

top与count

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; top&count; 8-17

takeOrdered与take

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; takeOrdered&take; 8-18

reduceByKey与collectAsMap

Spark操作; 基于RDD的大数据处理分析; RDD transformation与action; reduceByKey&collectAsMap; 8-19

5.参考资料

【大数据技术与处理】推荐阅读

ShowMeAI 系列教程推荐

图解大数据技术:从入门到精通系列教程 本篇内容是ShowMeAI组织的「图解大数据处理与开发」系列教程入口,本教程以大数据技术为根基,给大家讲解大数据开发与数据处理分析的相关知识与技能,并配以相关的实战案例帮助大家学习理解。... 阅读详情

相关推荐

基于Spark的企业订单数据分析

大数据实验教学系统案例:企业订单数据分析现有某公司销售数据集,包含orders、order details和products数据。其中:830个orders和2,155个order details。现公司领导提出,希望大数据分析部门通过分析该销售数据集,回答以下问题: • 每个客户下了多少订单? • 每个国家的订单有多少? • 每月(年)有多少订单? • 每个客户的年销售总额是多少? • 客户每年的平均订单是多少?本案例用到的数据集说明如下:   订单数据集文件:/data/dataset/nw/NW-Or

需要远程指导仿真实验、代码有问题的,请后台私信或者关注公众号 3483

Spark快速大数据分析(一)

楔子 Spark快速大数据分析 前3章内容,仅作为学习,有断章取义的嫌疑。如有问题参考原书 Spark快速大数据分析 以下为了打字方便,可能不是在注意大小写 1 Spark数据分析导论 1.1 Spark是什么 Spark是一个用来实现快速而通用的集群计算的平台。 在速度方面,Spark扩展了广泛使用的MapReduce计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理。在处...

zhuzi51的专栏 1万+

老子「不贵其师,不爱其资,虽智大迷」照进 ABAP Cloud 开发的一条暗线

老子这句话出自《道德经》第二十七章,原文前面还有「故善人者,不善人之师;不善人者,善人之资」。放在一起看,它不是一句单纯劝人尊师重道的话,而是在讲一种更深的认知结构。善者当然可为师,因为它提供了方向、尺度、方法和可承袭的经验。不善者也不是废物,它同样是资,因为它暴露了问题、边界、代价和反面教材。若一个人只承认自己心中喜欢的师,却不珍惜那些让自己不舒服的资,老子说,即便看起来聪明,也已经落入大迷。中国哲学书电子化计划收录的《道德经》第二十七章,正是以「善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2485

【计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例】

【计算机大数据毕设之基于spark+hadoop的大数据分析论文写作参考案例-哔哩哔哩】https://b23.tv/zKOtd3L 目 录 一 引言​1 二 系统分析​2 2.1 必要性和可行性分析​2 2.2 技术分析​2 三 总体设计​4 3.1 可视化界面设计​4 3.2 数据库设计​4 3.3 网页设计​5 四 实验实现​6 4.1 大数据实验环境的搭建​6 4.1.1 Linux系统及相关软件的配置​6 4.1.2 JDK的安装​7 4.1.3 Scala的安装​

laoman456的博客 8989

基于Spark的零售交易数据分析

该项目是大三下学期的课程设计,选取了共541909条数据,以Python为编程语言,使用大数据框架Spark对数据进行了预处理,然后分别从多个方面对数据进行了分类和分析,并对分析结果进行可视化。里面包含我的课程设计报告和完整的代码。希望对你们有帮助。

【Boost5】Boost变换器的输入电容

节点的电流有3个,一个是来自电源输入的,由于我们把Vin看成理想电源以及线路的电感的存在,它可以近似看作是恒定的电流源Iin,一个是流向输入电容Cin的电流Icin,另外一个节点是电感L电流IL。电容电流波形在整个开关周期内的平均值为0,充电和放电在一个周期中各占1/2,在图中充电部分面积和放电部分面积相等,那么在充电或放电的电荷量Q=I*t,从图中可以看出,在一个周期内电容电流变化量是ΔIL,那在电容在充电1/2T周期中电流的变化量是1/2ΔIL。输入电容上的ESR也会随着电流变化,影响输入电压的变化。

qq_43416206的博客 3351

图解大数据 | 大数据分析挖掘-Spark初步

Apache Spark是目前最主流和常用的分布式开源处理系统,支持跨多个工作负载重用代码—批处理、交互式查询、实时分析、机器学习和图形处理等。本节ShowMeAI给大家讲解它的相关知识。

ShowMeAI研究中心 1万+

光伏发电预测(LSTM、CNN_LSTM和XGBoost回归模型,Python代码)

一旦结果与预测差距较大,可能存在光伏系统的问题,需要找出原因,然后采取适当措施来修复光伏系统并做出更好的决策。例如,根据准确的预测,光伏系统运营商可以平衡电力消耗,并将多余的电力储备用于紧急情况。然而,光伏系统的发电量估算是一个挑战,因为光伏系统的发电量受到天气条件的极大影响。整个项目文件夹(第一个文件夹为xgboost模型相关的包文件,xg.py是xgboost模型英文注释版本,xg_chinese.py是xgboost模型中文注释版本)表示空气的温度,通常以摄氏度(°C)或华氏度(°F)为单位。

2301_79699110的博客 3034

spark(一)--spark-core--RDD入门实战(详解各大api,基于IDEA开发)

目录 RDD RDD创建操作 RDD转化操作_ 0. 入门经典程序,统计字符 在项目的父目录下创建in目录,创建word.txt def main(args: Array[String]): Unit = { //上下文 var conf=new SparkConf().setAppName("WordCount").setMaster("local"); var sc=new SparkContext(conf); sc.setLogLevel("ERROR")

zisuu的博客 1232

基于PLC的图书馆机器人设计与仿真

本文设计了一种基于PLC的图书馆机器人系统,该系统能提升图书馆自动化管理水平,选用西门子S7-1200系列PLC作为核心控制单元,结合电机驱动、传感器采集以及超声波避障等技术,设计出机器人行走、图书识别与分拣的功能模块,系统借助条形码扫描模块获取图书信息,将其分析后与设定的存放位置做对比,精准达成图书的存取和归还。仿真结果显示,机器人执行任务时运动控制响应时间是0.35秒,避障成功率为98.3%,图书识别准确率高达99.4%,在控制系统方面,运用STEP7-MICRO/WIN软件编程,结合WINCC设计组态

weixin_44553616的博客 1926

Cobalt Strike4.0安装包(内附中文版)

1.什么是 Cobalt Strike Cobalt Strike 是一个为对手模拟和红队行动而设计的平台,主要用于执行有目标的攻击和模拟高级威胁 者的后渗透行动。 Cobalt Strike已经不再使用MSF而是作为单独的平台使用,它分为客户端与服务端,服务端是一个,客户端可以有多个,可被团队进行分布式协团操作。集成了端口转发、扫描多模式端口Listener、Windows exe程序生成、W...

梦之序章的博客 2万+

Spark之RDD常用方法

简介 RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 RDD的属性 (1)一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,并决定并行计算的粒度。用户可以在

qq_43222167的博客 1050

SAP特殊库存全解析:供应商寄售、客户寄售、分包与项目库存说明

客户寄售库存(Customer Consignment)是企业将物料存放于客户处,客户实际领用后才确认销售收入。这种模式能缩短交货周期、提高客户满意度,但需严格跟踪寄售库存的数量与状态。

我小时候很黑的博客 822

Spark详解

spark详解

wudidahuanggua的博客 8127

手把手教你学基带SOC芯片(4.4.9)--基带芯片的电源管理实例:高通 Snapdragon 系列实例(十)

Snapdragon 888 通过支持多种深度睡眠模式,如 AOAC 模式、低功耗模式和深度睡眠模式,以及智能电源管理技术,实现了对功耗的精细管理。这些模式不仅延长了设备的电池寿命,还确保了用户在各种使用场景下的良好体验。无论是保持网络连接、限制后台活动,还是完全关闭不必要的功能,Snapdragon 888 都能够灵活应对,提供高效的功耗管理方案。

MHD0815的博客 741

YOLOv8首发优化:遥感目标检测 | 专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块,解决低空间分辨率、传感器噪声、目标模糊、低光照退化和部分遮挡等限制

一种轻量级网络,其创新性地整合了专为低质量遥感图像设计的边缘 - 高斯聚合(EGA)模块。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 493

【Python3实战Spark大数据分析及调度】第3章 Spark Core核心RDD

第3章 Spark Core核心RDD 大部分截图来自于官网:http://spark.apache.org/docs/latest/rdd-programming-guide.html RDD源码:源码git地址 RDD五大特性: 1. A list of partitions RDD是一个由多个partition(某个节点里的某一片连续的数据)组成的的list;将数据加载为RDD时,一般会...

Melo 453

企业级 Token 中转架构设计:高并发、多模型、费用监控一次搞定

摘要:本文针对企业级AI开发中的多模型接口混乱、高并发稳定性差及Token费用失控等痛点,提出一套2026年企业级Token中转架构解决方案。该方案采用五层分层设计(接入层、网关层、调度层、服务层、存储层),实现多模型统一接口、智能路由、高并发限流容错及精细化成本监控。核心功能包括:异构模型标准化接入、动态路由策略(场景/成本/负载/容灾)、多级限流熔断机制、全链路Token计费与安全防封体系(指纹清洗、IP池隔离)。通过分层解耦与模块化设计,企业可降低50%成本、提升99%稳定性,并避免封号风险。文章还提

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 149

spark的rdd的含义_Spark核心技术原理透视一(Spark运行原理)

原标题:Spark核心技术原理透视一(Spark运行原理)在大数据领域,只有深挖数据科学领域,走在学术前沿,才能在底层算法和模型方面走在前面,从而占据领先地位。Spark的这种学术基因,使得它从一开始就在大数据领域建立了一定优势。无论是性能,还是方案的统一性,对比传统的Hadoop,优势都非常明显。Spark提供的基于RDD的一体化解决方案,将MapReduce、Streaming、SQL、Mac...

weixin_31499265的博客 440

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

五-上, Spark RDD 概述,五大属性,执行原理

五, Spark 核心编程 5.0 一个简单的分布式计算程序 先通过一个简单🌰了解一下什么是分布式计算 在了解了分布式计算大概是个什么情况后, 我们来学习Spark Spark计算框架为了能够进行高并发和高吞吐的数据处理, 封装了三大数据结构, 用于处理不同的应用场景,分别是: - RDD: 弹性分布式数据集 - 累加器: 分布式共享只写变量 - 广播变量: 分布式共享只读变量 数据结构: 计算机存储和组织数据的方式 5.1 RDD (数据和逻辑, 最小的计算单元) RDD: 代表着

菜菜的大数据开发の路 2530

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

rdd分片 spark_Spark基础知识(一)---常用组建和RDD

一、什么是SparkSpark是用于大规模数据处理的统一分析引擎,Spark的一个主要特点是能够在内存中进行计算,及时依赖磁盘进行复杂的运算,Spark比MapReduce更加高效。中间结果输出:基于MapReduce的计算引擎通常会将中间结果输出到磁盘上,进行存储和容错。出于任务管道承接的考虑,当一些查询翻译到MapReduce任务时,往往会产生多个Stage,而这些串联的Stage又依赖于底层...

weixin_30646295的博客 250

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)

【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)

showswoller的博客 2091

大数据平台:Spark基础+Hadoop回顾

第一部分:dive in Spark Spark简述 旨在“使数据分析更快”的大数据处理框架。速度进步明显。 易用:使用更加简洁优雅的Scala语言编写,但同时也支持多种语言编程。 有完整强大的技术栈。 适应能力强,运行模式多样。 Spark提供的生态系统可一站式满足批处理、交互式查询和流数据处理这三个实际应用中基本的大数据处理类型。 多数情况下,Spark的任务是专注于数据的分析处理,数据存储...

iamzchi 826

Spark大数据开发与应用案例(视频教学版)(八)--第四章上

本章深入探索Spark的核心抽象——RDD(弹性分布式数据集)。从RDD的基本概念出发,逐步解析其血缘关系、依赖类型及多种算子(包括Transformation、Action及特殊算子)。同时,通过模拟自定义RDD与任务执行原理图解,让读者掌握Spark的实战技巧。

辉哥大数据 1257
上一篇: 图解大数据 | 大数据分析挖掘-Spark初步
下一篇: 图解大数据 | 综合案例-使用Spark分析挖掘零售交易数据
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值