今晚听了王家林老师的第14课spark RDD解密,课堂笔记如下:
Spark是基于工作集的应用抽象,RDD:Resillient Distributed Dataset是基于工作集的,spark可以对结果重用。
位置感知:spark比hadoop更精致。
RDD是lazy的,是分布式函数式编程的抽象,RDD可以看做一个只读的List或者Array。产生的中间结果怎么办? 不能让
他立即计算,采用Lazy级别,只对数据处理做标记。所以RDD操作是有向的,链式的,所以Stage有1000个步骤,不需要999个中间结果,默认只产生一次结果。数据量越大,计算步骤越多,优势更明显。
protected def getPartitions: Array[Partition]
/*** :: DeveloperApi ::
* Implemented by subclasses to compute a given partition.
*/
@DeveloperApi
def compute(split: Partition, context: TaskContext): Iterator[T]
这样所有RDD操作返回一个迭代器,这样后续框架可以无缝集成,用迭代器来遍历结果就可以了,不需要知
道具体结构。
RDD缺陷:
不支持细粒度的更新操作以及增量迭代计算
后续课程可以参照新浪微博 王家林_DT大数据梦工厂:http://weibo.com/ilovepains
王家林 中国Spark第一人,微信公共号DT_Spark
转发请写明出处。
时间: 2024-08-02 15:10:08