RDD只是一个逻辑概念,在内存中并不会真正地为某个RDD分配存储空间(除非该RDD需要被缓存)。
数据操作分为transform()
和action()
两种。
transform()
是一个单向操作,rdd1进行操作后会产生新的rdd2,不会修改rdd1。
新生成的childRDD中的每一个分区都依赖parentRDD中的一部分分区
map()
fliter()
union()
cogroup()
join()
cartesian()
新生成的childRDD中的每一个分区都依赖parentRDD中的每个分区的一部分
按照元素的下标划分
常用于输入数据的划分(Map)
HashPartitioner
经常被用于数据Shuffle阶段(Reducer)
采用抽样方法来估算数据区域边界