Spark官方简述

在这里插入图片描述
Spark是一种分布式的计算框架,可以处理海量数据,目前流行的计算框架

  1. MapReduce:适用于离线批处理,也可以用于实时计算
  2. Storm: 用于实时计算
  3. Spark:即可以用于离线批处理,也可以用于实时计算
  4. Flink:主要用于实时计算
    在这里插入图片描述
    综上,我们发现MapReduce计算框架是一种高度依赖于磁盘I/O框架,而且在有些业务场景下,比如某算法(梯度下降法,逻辑回归)会多次用到前写job的结果,导致重新计算及shuffle过程
    在这里插入图片描述
    Spark计算框架是高度依赖于内存框架,而且支持将中间结果缓存,避免大量的重新计算,所以Spark框架也被称为内存计算框架

Spark生态架构

在这里插入图片描述
Spark框架设计目的:可以一栈式处理大数据所有的应用场景包括:

  1. 离线批处理
  2. 实时处理
  3. 交互式查询
  4. 算法建模

Spark使用模式

  1. Local:本地单机模式,一般用于测试或练习
  2. Standalone:Spark集群模式
  3. On Yarn:Spark的资源交给Yarn来管理

Spark最核心的数据结构

RDD(Resilient Distributed Datasets)

RDD:弹性分布式数据集,初学时,可以把RDD看做是一种集合类型(Array,List类比)

RDD的特点

  1. 有容错机制,即使数据丢失是可以恢复的
  2. 有分区机制,可以并行处理RDD数据

RDD的分区机制目的:
可以分布式的计算RDD的数据集,底层可以确保分区数据的负载均衡状态
在这里插入图片描述

创建RDD的方式

  1. 将一个普通的集合类型(Array或List)转为RDD
  2. 通过Spark读取外部存储文件,将文件数据转变为RDD,可以从本地磁盘读取,也可以从HDFS读取

补充知识:

  1. sc是SparkContext的别名对象,用于操作Spark的入口对象,通过sc可以创建RDD,广播变量,此外sc用于负责job任务的分配和监控

  2. 创建RDD方法
    (1) sc.parallelize(普通类型集合,分区数量)
    (2) sc.makeRDD(普通类型集合,分区数量)

  3. 关于RDD分区相关的方法
    (1) rdd.partitions.size:查看分区数
    (2) rdd.glom.collect:查看分区数据

  4. 创建RDD的两种途径
    (1)


RDD的函数操作

在这里插入图片描述
在这里插入图片描述


常用的RDD操作方法

在这里插入图片描述


Spark的DAG概念

在这里插入图片描述
在这里插入图片描述


RDD之间的依赖关系

两种:
在这里插入图片描述


Spark DAG 的Stage划分

在这里插入图片描述

发布了216 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_39868387/article/details/104663415
今日推荐