Spark快速大数据分析.pdf

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

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、为执行器节点调度任务

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值