glom
glom的作用是将同一个分区里的元素合并到一个array里
glom属于Transformation算子:这种变换并不触发提交作业,完成作业中间过程处理。
Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。
源码:
/**
* Return an RDD created by coalescing all elements within each partition into an array.
*/
def glom(): RDD[Array[T]] = withScope {
new MapPartitionsRDD[Array[T], T](this, (context, pid, iter) => Iterator(iter.toArray))
}
举例说明
建一个RDD,glom之前为
glom之后可见RDD中的元素已经变成了分片映射的列表
当调用parallelize()方法的时候,不指定分区数的时候,使用系统给出的分区数,我们这里指定了3
个分区