Apache Spark是一个开源的通用集群计算系统,它提供了High-level编程API,支持Scala、Java和Python三种编程语言。Spark内核使用Scala语言编写,通过基于Scala的函数式编程特性,在不同的计算层面进行抽象,代码设计非常优秀。
RDD抽象
RDD(Resilient Distributed Datasets),弹性分布式数据集,它是对分布式数据集的一种内存抽象,通过受限的共享内存方式来提供容错性,同时这种内存模型使得计算比传统的数据流模型要高效。RDD具有5个重要的特性,如下图所示:
上图展示了2个RDD进行JOIN操作,体现了RDD所具备的5个主要特性,如下所示:
一组分区
计算每一个数据分片的函数
RDD上的一组依赖
可选,对于键值对RDD,有一个Partitioner(通常是HashPartitioner)
可选,一组Preferred location信息&