Spark快速大数据分析.pdf

本文介绍了Spark中的关键概念——弹性分布式数据集(RDD),包括转化操作如map和filter,以及行动操作如count和first。RDD采用惰性计算,仅在执行行动操作时才触发实际计算,节省存储空间。缓存数据可通过RDD.persist()实现,以提高重用效率。此外,文章还阐述了Spark的任务调度和DAG执行计划,以及驱动器和执行器的角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RDD:弹性分布式数据集(Resilient Distributed Dataset)

RDD 支持两种操作:转化操作和行动操作

转化操作(transformation):由一个 RDD 生成一个新的 RDD ,比如 map() 和 filter()

pythonLines = lines.filter(line => line.contains("Python"))

和行动操作(action):向驱动器程序返回结果或把结果写入外部系统的操作,会触发实际的计算

,比如 count() 和 first()。

惰性计算RDD:第一次在一个行动操作中用到 时,才会真正计算

调用 sc.textFile() 时,数据并没有读取进来,而是在必要时才会读取。和转化操作一样的是, 读取数据的操作也有可能会多次执行。

如果 Spark 在 lines = sc.textFile(...) 就把文件中 所有的行读取并存储,就会消耗很多存储空间。

相反, 一旦 Spark 了解了完整的转化操作链之后,它就可以只计算求结果时真正需 要的数据。事实上,在行动操作 first() 中,Spark 只需要扫描文件直到找到第一个匹配 的行为止,而不需要读取整个文件。

缓存数据:如果想 在多个行动操作中重用同一个 RDD,可以使用 RDD.persist() 让 Spark 把这个 RDD缓存下来,默认情况下 persist() 会把数据以序列化的形式缓存在 JVM 的堆空 间中

创建 RDD :已有的集合传给 SparkContext 的 parallelize() 方法

val lines = sc.parallelize(List("pandas", "i like pandas"))(不常用)

常用的是从外部存储读取数据

collect() :来获取整 个 RDD 中的数据在本地处理 ,不能用在大规模数据集上

take() :获取RDD 中的少量元素

rdd.reduceByKey(func) 与 rdd.groupByKey().mapValues(value => value.reduce(func)) 等价,但是前 者更为高效

驱动器(Driver)节点:中央协调节点,调度各个分布式工作节点

执行器(executor)节点:与之对应的工作节点

Spark 应用(application):驱动器节点和所有的执行器节点

集群管理器(Cluster Manager):外部服务,使Spark 应用在集群中的机器上启动

两大开源集群管理器:Hadoop YARN 和 Apache Mesos

Spark 驱动器:执行程序中的 main() 方法的进程(Spark shell 总是会预先加载一个叫作 sc 的 SparkContext 对象)

Spark 应用中两个职责:

1、把用户程序转为任务

任务 (task):Spark 驱动器程序把用户程序转换后的多个物理执行单元, Spark 中最小的工作单 元,用户程序通常要启动成百上千的独立任务

有向无环图 (Directed Acyclic Graph,简称 DAG):Spark 程序其实是隐式地创建出了一个由操作组成的逻辑上的有向无环图

Spark 程序都遵循同样的结构:程序从输入数据创建一系 列 RDD,再使用转化操作派生出新的 RDD,最后使用行动操作收集或存储结果 RDD 中的数据。

当驱动器程序运行时,它会把这个逻辑图转为物理执行计划。

步骤(stage):由多个任务组成,这些任务会被打包并送到集群中

优化逻辑执行计划:,比如将连续的映射转为流水线化执行,将多个操作合并到一个步骤

2、为执行器节点调度任务

。执行 器进程启动后,会向驱动器进程注册自己

DOI:10.16525/j.cnki.14-1362/n.2019.10.31 总第 184 期 2019 年第10 期 Total of 184 No.10, 2019 大数据 收稿日期: 2019-08-16 第一作者简介: 林海 (1989—) , 男, 本科, 研究方向为飞行 教育。 基于大数据下的 Spark 快速大数据分析 林 海, 王 强, 李英震 (空军航空大学初级飞行训练基地二团, 黑龙江 哈尔滨 150100) 摘 要: 在数据大爆炸的时代, 随着数据量的激增, 如何更快速地处理、 使用这些规模大、 复杂度高的数据成为 迫在眉睫的问题。阐述了 Spark 的五大组件,研究了 Spark 数据处理应用和运行架构。Spark 通过优化传统的 MapReduce 模型来满足之前 HDFS 以及 MapReduce 无法解决的问题, 大大提高了效率, 为处理流式数据以及 其他需求提供了捷径。 关键词: 大数据; 数据分析; 计算; 数据处理 中图分类号: TP311 文献标识码: A 文章编号: 2095-0748 (2019) 10-0075-02 现代工业经济和信息化 Modern IndustrialEconomy and Informationization 引言 随着科学技术和社会经济的高速发展, 我们已经 处于一个数据大爆炸的时代, 手机、 ipad 以及其他的 物联网设备每分每秒都会产生大量的全新数据, 这 些数据不仅数量大,而且更加复杂,来源也越来越 广。 据科学家预测, 到 2020 年, 将会有 600 多亿台的 互联网设备产生 Zeta 级的数据, 所以如何更加合理 快速地处理并且使用这些规模大、复杂度高的数据 成为我们迫在眉睫需要解决的问题。 随着数据量的快速增长,以及一些公司对数据 进行实时计算和实时处理的要求,传统的 MapRe- duce 模型已经无法满足这些要求, 而且更加重要的是 MapReduce 在进行 Shuffle 时会产生大量的 I/O, 使 得效率变低。 Spark 的出现扩展了传统的 MapReduce 模型, 不但能提供更多更加高效的计算模型, 还能够 适用于多种不同的分布式平台场景上。同时 Spark 还可以让使用者们简单而低消耗地将各种处理流程 整合到一起,这样既满足了对实时计算以及实时处 理的要求, 还减轻了对各种平台分别管理的负担[1]。 1 Spark 的五大组件 在 spark Core 中实现了 Spark 的一些基础的功 能, 例如进行内存的管理、 进行错误的恢复、 对任务 的调度、 与存储系统进行交互等功能。 它还包含了对 弹性分布式数据集的 API 定义。 Spark SQL 是被用来对结构化数据进行操作 的程序包, 它支持多种数据源, 例如 Hive 表、 JSON、 Parquet 等, 还可以使用 HQL 来进行数据的查询。 Spark Streaming 能够对实时的数据进行流式计 算。 它具有准时的特点, 同时提供离散化流数据的高 级抽象概念, 以此来表示连续的数据流。 离散流是可 以来自 Flume、 Kafka 等输入源的输入数据流来创 建, 进行批处理, 时间一般是秒级。 MLib 是 Spark 提供的一个常见的机器学习功能 的程序库, 它提供了许许多多的机器学习算法, 这些 算法中包括了回归、 聚类、 分类、 协同过滤、 数据导 入、 模型评估等功能。 Graphx 是能够进行并行操作的图计算,可以用 来操作图的程序库。 2 Spark 数据处理应用 众所周知因为 MapReduce 在交互计算以及迭 代计算任务上的效率比较低,所以 Spark 出现了, Spark 的出现使得交互式查询以及迭代计算效率大 大增加,不但如此它还支持高效的容错机制和内存 式存储。Spark 不仅仅能够将 HDFS (分布式文件系 统) 上面的文件读取为分布式数据集, 还支持本地文 件、 Hive、 HBase 等。 每一个 Spark 应用都会由一个驱动 器程序 (Driver Program) 来发起集群上的并行操作[2]。 3 Spark 的运行架构 在 HDFS 的环境下, Spark 采取的是 Master/Slave, 即主从架构,也就是由一个主节点来负责中央的协 调, 调度其他每个分布式节点, 其中负责中央协调的 节点就称为驱动器节点,也就是我们所说的 Driver 第 9 卷 现代工业经济和信息化 xdgyjjxxhx@163.com (上接第 74 页) Application of Big Data in Human Resource Management Wang Xiaoli (Shanxi Provincial Pers
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值