好程序员大数据高端班分享 Spark知识点集合

Spark是基于内存的迭代计算框架,适用于须要屡次操做特定数据集的应用场合。须要反复操做的次数越多,所需读取的数据量越大,受益越大,数据量小可是计算密集度较大的场合,受益就相对较小(大数据库架构中这是是否考虑使用Spark的重要因素)。java

一、Spark的核心是什么?python

RDD是Spark的基本抽象,是对分布式内存的抽象使用,实现了以操做本地集合的方式来操做分布式数据集的抽象实现。RDD也是Spark很是核心的东西,它表示已被分区,不可变的并可以被并行操做的数据集合,不一样的数据集格式对应不一样的RDD实现。web

RDD必须是可序列化的。RDD能够cache到内存中,每次对RDD数据集的操做以后的结果,均可以存放到内存中,下一个操做能够直接从内存中输入,省去了MapReduce大量的磁盘IO操做。这对于迭代运算比较常见的机器学习算法, 交互式数据挖掘来讲,效率提高比较大。算法

二、Spark的适用场景有哪些?shell

因为RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合。总的来讲Spark的适用面比较普遍且比较通用。数据库

三、Spark支持的编程语言有哪几种?编程

Spark经过与编程语言集成的方式暴露RDD的操做,相似于DryadLINQ和FlumeJava,每一个数据集都表示为RDD对象,对数据集的操做就表示成对RDD对象的操做。Spark主要支持的编程语言是Scala、java、python。架构

Scala框架

Spark使用Scala开发,默认使用Scala做为编程语言。编写Spark程序比编写Hadoop MapReduce程序要简单的多,SparK提供了Spark-Shell,能够在Spark-Shell测试程序。机器学习

Java

Spark支持Java编程,但对于使用Java就没有了Spark-Shell这样方便的工具,其它与Scala编程是同样的,由于都是JVM上的语言,Scala与Java能够互操做,Java编程接口其实就是对Scala的封装。

Python

如今Spark也提供了Python编程接口,Spark使用py4j来实现python与java的互操做,从而实现使用python编写Spark程序。Spark也一样提供了pyspark,一个Spark的python shell,能够以交互式的方式使用Python编写Spark程序。

相关文章
相关标签/搜索