spark简介

    Apache  Spark是一个开源的、强大的分布式查询和处理引擎。提供MapReduce的灵活性和可扩展性,但速度明显提高:当数据存储在内存中时,它比Apache Hadoop快100倍,访问磁盘时高达10倍。

    Apache  Spark允许用户读取、转换、聚合数据,还可以轻松地训练和部署复杂的统计模型。Java、Scala、Python、R、SQL都可以访问Spark API.


spark作业和API

执行过程:任何Spark应用程序都会分离主节点上的单个驱动进程(可以包含多个作业),然后将执行进程(包含多个任务)分配给多个工作节点。


    驱动进程会确定任务进程的数量和组成,这些任务进程是根据为指定作业生成的图形分配给执行节点的。

Spark作业与一系列对象依赖相关联,这些依赖关系是以有向无环图(DAG)的方式组织的。



弹性分布式数据集

弹性分布式数据集(RDD)是不可变Java虚拟机(JVM)对象的分布式集合,Apache Spark就是围绕着RDD而构建的。我们使用Python时,尤为重要的是要注意Python数据是存储在这个JVM对象中的。

这些对象允许作业非常快速的执行计算。对RDD的计算依据缓存和存储在内存中的模式进行:与其他传统分布式框架相比,该模式使得计算速度快了一个数量级。

同时RDD会给出一些粗粒度的数据装换(如:map()、reduce()、filter()),保持Hadoop平台的灵活性和可扩展性。以执行各种各样的计算。RDD以并行方式应用和记录数据转换,从而提高了速度和容错能力。

RDD有两组并行操作:转换(返回指向新RDD的指针)和动作(在运算后向驱动程序返回值)

RDD的转换操作是惰性的,因为它们不立即计算其结果。只有动作执行了并且需要将结果返回给驱动程序时,才会计算转换。该延迟执行会产生更多精细查询:针对性能进行优化的查询。


DataFrame

    DataFrame像RDD一样,是分布在集群的节点中的不可变的数据集合。然而,与RDD不同的是,在DataFrame中,数据是以命名列的方式组织的。

   DataFrame旨在使大型数据集的处理更加容易。它们允许开发人员对数据结构进行形式化,允许更高级的抽象。

提供了一个特定领域的语言API来操作分布式数据。

Dataset

    Spark Dataset旨在提供一个API,允许用户轻松地表达域对象的转换,同时还提供了具有强大性能和优点的Spark

SQL执行引擎。

Catalyst优化器

    Spark SQL是Apache Spark最具技术性的组件之一,因为它支持SQL查询和DataFrame API.


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。