PySpark空间计算学习总结—(4)Spark Core核心RDD

Spark 最重要的是 RDD,SparkSQL、SparkStreaming是构建在 RDD 之上的。

一、什么是 RDD

RDD:Resilient Distributed Dataset 弹性分布式数据集

它在源码中为:

abstract class RDD[T:ClassTag](
  @transient private var _sc:SparkContext,
  @transient private var deps:Seq[Dependency[_]]
)extends Serializable with Logging

说明:1)RDD 是一个抽象类,不能直接使用,需要在它的子类中实现它的方法;

2)带泛型,可以支持多种类型,比如:String、Person、User

官网里面有描述它的一段话:Represents an immutable(不可变的) partitioned collection of elements(集合里面的元素是可以分区的,比如Array(1,2,3,4,5,6,7,8,9,10) 可以分为 3 个分区(1,2,3)、(4,5,6)、(7,8,9,10)) that can be operated on in parallel(可以并行计算).

二、RDD 的特性

(1)一个 RDD 由一系列的分区/分片(partitions)组成;

(2)对一个 RDD 执行一个函数,就是对 RDD 上面的所有分区执行同一个函数;

(3)依赖关系:A list of dependencies on other RDDs

如 rdd1 通过某个方法生成 rdd2,rdd2 通过某个方法生成 rdd3,rdd3 通过某个方法生成 rdd4,则说明 rdd4 是依赖 rdd3、rdd2、rdd1等等一系列 rdd,则若 rdda = 5 个 partition,通过 ==>map 计算之后得到 rddb = 5 个 partition

(4)(Optionally),a Partitioner for key-value RDDs(eg. To say that the RDD is hash-partitioned)

(可选地)对于有 key-value 的 RDDs 的分区规则;

(5)(Optionally),a list of preferred locations to compute each split on(e.g. block locations for an HDFS file)

(可选地)数据在哪里,优先把作业调度到数据所在的节点进行计算:移动数据不如移动计算

 

五大特性源码体现:

(1)protected def getPartitions:Array[Partition]  ----对应第一个特性

(2)def compute(split:partition, context: TaskContext): Iterator[T]  ----对应第二个特性

(3)protected def getDependencies: Seq[Dependency[__]]=deps  ---对应特性三

(4)@transient val partitioner:Option[Partitioner] = None ---对应特性四

(5)protected def getPreferredLocations(split:Partition):Seq[String] = Nil  ---对应特性五

 

三、RDD 图解

这里参考虾神的博客:https://blog.csdn.net/allenlu2008/article/details/86668253

虾神博客写得很好,这里面就不再赘述了。

四、SparkContext&SparkConf 详解

第一要务:创建 SparkContext

连接到 Spark“集群”:不一定是集群,Spark 也可以运行 local(运行在本地)、standalone(可以用很多个节点)、yarn、mesos这几种模式;通过 SparkContext 来创建 RDD、广播变量到集群;

在创建 SparkContext 之前还需要创建一个 SparkConf 对象:

conf = SparkConf().setAppName(appName).setMaster(master)
sc = SparkContext(conf=conf)
//例如可以这样设置:conf.setMaster(“local”).setAppName(“My app”)

提交 PySpark 应用程序(在 $SPARK_HOME/bin目录下)

./spark-submit --master local[2] --name spark0301 /home/hadoop/script/spark0301.py

具体提交的详细说明参见:http://spark.apache.org/docs/latest/submitting-applications.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值