0


Spark复习

Spark特点

  1. 快速:spark在内存中的运行速度是Hadoop mapreduce 运行速度的100多倍,spark在磁盘中的运行速度是Hadoop mapreduce运行速度的10多倍。spark用内存,Hadoop mapreduce用硬盘。
  2. 易用:spark支持使用Scala、python、java、R等语言快速编写应用。
  3. 通用:spark可以与sql语句、实时计算及其他复杂的分析计算进行良好的结合。
  4. 随处运行
  5. 代码简洁

spark产生的原因

因为Hadoop中的mapreduce计算出现了问题,所以出现了spark。

  1. mapreduce计算效率低:mapreduce的中间结果需要保存到磁盘,所以相对于spark存放在内存中的方式,mapreduce的计算效率低。
  2. 操作灵活性低:MapReduce仅支持Map和Reduce两种操作,spark提供了一系列组件,任何数据都能运行。
  3. 表达能力有限:MapReduce的计算模型较为固定,只包含Map和Reduce两个阶段,而Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作。

spark生态圈组件

  1. Spark Core:Spark的核心,提供底层框架及核心技术,如RDD抽象、任务调度、内存管理等。
  2. BlinkDB:基于Spark的快速、可扩展的大数据查询引擎。
  3. Spark SQL:用于处理结构化数据的Spark组件,支持SQL查询和DataFrame/Dataset API。
  4. Spark Streaming:Spark的实时数据处理组件,用于处理流式数据。
  5. MLBase:MLBase是Spark生态圈中专注于机器学习的一个组件,旨在降低机器学习的门槛,MLlib、MLI、ML Optimizer、MLRuntime
  6. GraphX:Spark的图计算组件,支持图数据的处理和计算。
  7. SparkR:Spark的R语言接口,允许R语言开发者使用Spark进行大数据分析。

Spark的架构

  1. 客户端:用于用户提交作业的客户端。
  2. Driver:负责运行应用程序的main函数并创建sparkcontext,应用程序包含Driver功能的代码和分布在集群中多个节点上的Executor代码。
  3. SparkContext:应用上下文,控制整个生命周期。
  4. Cluster Manager:资源管理器,即在集群上获取资源的外部服务,目前主要有Stadalone和YARN。

MapReduce的层次结构

  1. 数据源层:负责数据的存储和访问。
  2. 计算层:提供基于磁盘的分布式并行批处理计算模型。
  3. 任务调度与资源管理:负责集群资源的调度和管理,以及作业的调度和监控。

Spark的层次结构

  1. 数据源层:负责数据的存储和访问,以及提供多种数据源的直接访问接口。
  2. 计算层:提供Spark的基本功能和API,以及基于这些API构建的多个库(如Spark SQL、MLlib、GraphX和Spark Streaming)。
  3. 资源管理层:负责集群资源的调度和管理。
  4. 工具层:提供辅助工具和服务,以支持Spark应用的开发和部署。

Spark三种运行模式

Standalone、YARN、Mesos

Spark核心数据集RDD

弹性分布式数据集是Spark中非常重要的概念

转换操作主要是指将原始数据集加载为RDD数据将一个RDD转换为另一个RDD的操作。

行动操作主要是指将RDD存储至硬盘中或触发转换操作执行的操作。

常用的转换操作

  1. map(func) : 对RDD中的每个元素都使用func,返回一个新的RDD。
  2. Filter(func) : 对RDD中的每个元素都使用func,返回使func为true的元素构成的RDD
  3. flatMap(func) : 和map()类似,但是flatMap()生成的是多个结果。
  4. union(otherDataset) :接收另一个RDD数据集otherDataset作为参数返回一个新的RDD,包含dataset和给定otherDataset的元素的集合。
  5. groupByKey(numTasks):作用于键值RDD,可根据相同的键分组。返回一个(K,Seq【v】)类型的数据集,默认情况下,使用8个并行任务进行分组,也可传入一个可选参数numTask,根据数据量设置并行任务数。
  6. reduceByKey(func,[numTasks]):用一个给定的func作用在groupByKey()产生的(K,Seq【v】)类型的数据集,如求和。和groupByKey()类似,并行任务数量可以通过一个可选的参数numTasks进行配置。

常用的行动操作

  1. reduce(func): 通过函数func聚集数据集中的所有数据。func函数接收两个参数,返回一个值。
  2. Collect():返回数据集中所有的元素
  3. Count(n):返回数据集中所有元素的个数
  4. first(n) : 返回数据集中的第一个元素
  5. task(n): 返回前n个元素
  6. saveAsTextFile(path):接收一个保存路径path作为参数,将数据集的元素以文本(Textfile)的形式保存到本地文件系统,HDFS或任何其他Hadoop支持的文件系统,Spark将会调用每个元素的toString()方法,并将它转换为文件中的一行文本
  7. Foreach(func): 对数据集中的每个元素都执行函数func。

Spark的核心原理

  1. 窄依赖指的是子RDD的一个分区只依赖于某个父RDD中的一个分区
  2. 宽依赖指的是子RDD的每一个分区都依赖于某个父RDD中的一个以上的分区

Scala语言特点

Scala是一种多范式的编程语言,是一种纯粹的面向对象的语言,每个值都是对象

  1. 面向对象:Scala是一种纯粹的面向对象的语言。
  2. 函数式编程
  3. 静态类型
  4. 可扩展

运行Scala


本文转载自: https://blog.csdn.net/So1ok5/article/details/139474097
版权归原作者 So1ok5 所有, 如有侵权,请联系我们删除。

“Spark复习”的评论:

还没有评论