图解大数据 | 基于RDD大数据处理分析@Spark操作

简介: RDD(弹性分布式数据集合)是Spark的基本数据结构,Spark中的所有数据都是通过RDD的形式进行组织。本文讲解RDD的属性、创建方式、广播与累加器等重要知识点,并图解RDD高频算子。

ShowMeAI研究中心

作者:韩信子@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

参考资料

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

ShowMeAI 系列教程推荐

ShowMeAI用知识加速每一次技术成长

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1天前
|
分布式计算 Java 关系型数据库
|
3天前
|
数据可视化 大数据 Python
python大数据分析处理
python大数据分析处理
10 0
|
4天前
|
机器学习/深度学习 人工智能 大数据
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
|
6天前
|
SQL 分布式计算 数据可视化
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
数据分享|Python、Spark SQL、MapReduce决策树、回归对车祸发生率影响因素可视化分析
|
10天前
|
存储 机器学习/深度学习 数据采集
大数据处理与分析实战:技术深度剖析与案例分享
【5月更文挑战第2天】本文探讨了大数据处理与分析的关键环节,包括数据采集、预处理、存储、分析和可视化,并介绍了Hadoop、Spark和机器学习等核心技术。通过电商推荐系统和智慧城市交通管理的实战案例,展示了大数据在提高用户体验和解决实际问题上的效能。随着技术进步,大数据处理与分析将在更多领域发挥作用,推动社会进步。
|
10天前
|
机器学习/深度学习 分布式计算 数据处理
Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
【5月更文挑战第2天】Spark是一个基于内存的通用数据处理引擎,可以进行大规模数据处理和分析
23 3
|
12天前
|
存储 运维 监控
|
13天前
|
分布式计算 DataWorks 大数据
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
MaxCompute操作报错合集之大数据计算的MaxCompute Spark引擎无法读取到表,是什么原因
|
13天前
|
分布式计算 大数据 BI
MaxCompute产品使用合集之MaxCompute项目的数据是否可以被接入到阿里云的Quick BI中
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
13天前
|
SQL 分布式计算 大数据
MaxCompute产品使用合集之怎样可以将大数据计算MaxCompute表的数据可以导出为本地文件
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。

热门文章

最新文章