发布网友 发布时间:2022-10-02 03:40
共1个回答
热心网友 时间:2024-12-01 08:02
spark Github: https://github.com/apache/spark/
RDD: 让开发者大大降低开发分布式应用程序的门槛以及执行效率。
RDD源码: https://github.com/apache/spark/tree/master/core/src/main/scala/org/apache/spark/rdd
弹性:代表着spark在分布式计算的时候,可以容错 ---计算层面
分布式:把一份数据拆分成多份,在各个节点上并行的运行,他们之间没有任何的依赖关系
数据集:一个文件就是一个数据集
partitioned collection of elements :数据可以拆分成分区
that can be operated on in parallel.:每个分区的内容可以并行的被操作
解释:
RDD(1,2,3,4,5,6,7,8,9) 假如需要 + 1
那么数据被分成三个分区,只要每个分区上的内容都执行+1的操作就可以
Hadoop001: (1,2,3) +1
Hadoop002: (4,5,6) +1
Hadoop003: (7,8,9) +1
@transient private var sc: SparkContext,
@transient private var deps: Seq[Dependency[ ]]
) extends Serializable with Logging {
(1)抽象类:RDD必然是由子类实现的,我们使用的直接使用其子类即可
(2)Serializable:可以序列化
(3)Logging:spark1.6可以使用,spark2.0之后不可以使用
(4)T:存储各种数据类型
(5)SparkContext
(6)@transient
大数据里面一般是移动数据不是移动计算,所以数据本地化计算这样性能更高。
def compute(split: Partition, context: TaskContext): Iterator[T]
RDD计算是对RDD里面的分区做计算,所以传入split: Partition 对应的RDD特点第二点
protected def getPartitions: Array[Partition]:
拿到分区,RDD是由一系列的分区构成,所以得到的一定是分区 Array[Partition] 对应着第一大特点
......