Spark复习

Spark特点

spark产生的原因

spark生态圈组件

Spark的架构

MapReduce的层次结构

Spark的层次结构

Spark三种运行模式

Spark核心数据集RDD

Spark的核心原理

Scala语言特点

运行Scala

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值