Apache Spark
Spark
Apache Spark是一个强大的开源处理引擎。是快速、易于使用的框架,允许你解决各种复杂的数据问题,无论是半结构化、结构化、流式或机器学习、数据科学。它以成为大数据方面最大的开源社区之一。
Apache Spark
Apache Spark是一个开源的、强大的分布式查询和处理引擎。可以轻松的训练和部署复杂的统计模型。Java、Scala、Python、R和SQL都可以访问Spark API。Apache Spark可用于构建应用程序,或将其打包成为要部署再集群上的库,或通过notebook交互式执行快速的分析
Spark作业和API
执行过程
任何Spark应用程序都会分离主节点上的单个驱动进程(可以包含多个作业),然后将执行过程(包含多个任务)分配给多个工作节点,
驱动进程会确定任务进程的数量和组成,这些任务进程是根据为指定作业生成的图形分配给执行节点。任何工作节点都可以执行来自多个不同作业的多个任务 Spark作业与一系列对象依赖相关联,这些以来关系是以向无环图(DAG)的方式组织的
弹性分布式数据集
弹性分布式数据集(简称RDD)是不可变Java虚拟机(JVM)对象的分布式集合,Apache Spark就是围绕着RDD而构建的。使用Python时要注意Python数据是存储这些JVM对象中。对RDD计算依据缓存和存储再内存中模式进行:与其他传统分布式框架(Apache Hadoop)相比,该模式使得计算速度快了一个数量级 RDD有两组并行操作:转换(返回指向新RDD的指针)和动作(在运行计算后向驱动程序返回值)。
DataFrame
DataFrame像RDD一样,是以分布在集群的节点中的不可变数据集合。然而,与RDD不同的是,在DataFrame中,数据是以命名列的方式组织的。 DataFrame的一个主要优点:Spark引擎一开始就构建了一个逻辑执行计划,而且执行生成的代码时基于成本优化程序确定的物理计划。与Java或者Scala相比,Python中的RDD非常慢,而DataFrame的引入则使性能在各种语言中都保持稳定。
Dataset
Spark Dataset旨在提供一个API,允许用户轻松的表达域对象的转换,同时还提供了具有强大性能和优点的Spark SQL执行引擎。
Catalyst 优化器
Spark SQL是Apache Spark最具技术性的组件,它支持SQL查询和DataFrame API。Spark SQL的核心是Catalyst优化器。优化器基于函数式编程结构,并且旨在实现两个目的:简化向Spark SQL添加新的优化技术和特性的条件,并允许扩展(例如:添加数据源特定规则,支持新的数据类型等):