ApacheSpark 知识

大过年不回家,来入门Spark吧!

什么是 Spark

Spark 是一个开源大数据数据处理框架,主要目的是处理实时生成的数据,基于内存操作处理速度更快。

主要应用

  • 数据处理 ETL

常见问题

RDD 弹性分布式数据集

RDD(弹性分布式数据集)是Spark的核心抽象。它是一组元素,在集群的节点之间进行分区,以便我们可以对其执行各种并行操作。
有两种方法可以用来创建RDD:

  • 并行化驱动程序中的现有数据。
  • 引用外部存储系统中的数据集,例如:共享文件系统,HDFS,HBase或提供Hadoop InputFormat的数据源。

DAG 有向无环图

在 Spark 使用 DAG 对RDD的关系进行建模,描述RDD之间的依赖关系。

贴一张图

Spark 和 Hadoop 的关系

Spark 既可以独立于hadoop体系去运行,也结合基于Hadoop组件去工作,Hadoop 的应用程序主要是基于 MapReduce ,应用程序会浪费很多时间在磁盘IO上,Spark便能更优的解决这个问题,基于内存操作数据集群之间共享数据速度会极大提升。


MapReduce 的工作过程


Spark 的工作过程

他们的区别主要在于Spark处理中间结果时是分布在各个机器的内存中的,这会带来的性能提升不言而喻。

Spark Sql

Spark 中用来处理结构化数据的模块,Spark Sql统一了数据访问,支持 RDD , HIve表,Json文件等。

Spark Sql 架构图:

分为三层

  • 查询API层
  • 模式RDD层
  • 数据层

DataFrame

Spark Sql 层面的数据集合概念,可以理解为一个分布式数据集合,每个DataFrame可以构造不同来源的数据信息,然后可以sql化查询数据信息。