spark系列博客-(1)初识spark

说明:本文是我从spark官方文档上翻译总结+个人理解的,如有不恰当和理解偏差的地方,请大家指出,一起交流学习!

翻译来源 http://spark.apache.org/docs/latest/programming-guide.html

1.每个spark应用均包含一个drive program作为当前应用的入口,每个spark应用的核心抽象就是RDDresilient distributed dataset,用于并行操作集群上的节点的被划分的元素集合)。

2.RDD被创建的两种方式

(1)由drive program内部存在的集合创建

(2)由外部文件系统创建(如:hdfs上的file

3.Spark中的共享变量

说明:Spark中的共享变量常用于并行操作中,在应用中,一个变量需要在一个任务中或任务与drive program之间被共享。

Spark中提供了两种类型的共享变量

(1)broadcast variables(在集群的所有节点上缓存到内存中的值)

(2)accumulators(计数操作,如:counterssums

4.spark应用程序中的核心对象SparkContext

SparkContextspark应用程序的上下文环境,用于告诉应用如何去访问集群,如何对集群中的节点进行操作。

创建方法:new SparkContext(new SparkConf().setAppName(appName).setMaster(master))

说明:appName参数是用于显示在webUI上的当前spark应用的名字,master是部署运行当前应用程序的节点url。在创建一个新的SparkContext对象之前一定要将当前active状态的SparkContext对象stop()

5.Spark-shell

Spark-shellspark包内置的一个交互式shell,当在spark安装目录下执行./spark-shell命令后,SparkContext对象自动创建(创建后对象的引用为sc),即可直接使用。

6.RDD操作

RDD支持两种类型的操作

(1)transformations:转换操作,用于创建新的数据集。如:mapfilter操作

(2)actions:响应操作,计算数据集后向drive program返回值。如:reducecollect操作

说明:

(1)spark中所有的转换transformations操作均为lazy的(当采取transformations操作时不会立即计算,只是仅仅记住自己需要做的事情,除非当一个action操作发生时。这样的设计对于应用的运行效率会有相当大的提升)

(2)Spark默认的是:当在同一个RDD执行action操作时,每次被transformationsRDD可能会被重计算,因此,为了提升效率,spark中提供了缓存机制(利用cache方法,如:rdd.cache)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章