RDD整合其他RDD的API,cartesian、union等。
一、cartesian
1.定义
2.功能描述
求两个RDD的笛卡尔积。
3.示例
二、union
1.定义
2.功能描述
两个RDD的联合操作,即合并两个RDD的元素到一个RDD中。
3.示例
4.示例解析
在union操作中,是不会进行去重的。
查看union操作的分区变化,对两个RDD进行联合后,得到的新RDD的分区数为这两个RDD的分区数之和,代码如下:
三、zip家族的API定义
(一)zip
1.功能描述
拉链操作,将两个RDD中第i个元素组成一个元组,形成Key-Value形式的二元组类型的PairRDD。
2.示例
zip操作时,对应分区的个数需一致,否则会报以下错误:(www.xing528.com)
zip操作时,对应各个分区的元素个数需一致,否则会报以下错误:
3.示例解析
zip方法可以将元素类型不同的RDD进行拉链操作,需要注意的是,当拉链操作时的两边的元素个数需要保持一致。
(二)zipPartitions
功能与zip类似,但是提供了更多方式的zip。
以下面这个API进行案例解析:
1.功能描述
将当前RDD和rdd2,rdd3进行拉链操作,具体的操作由f指定。
2.示例
3.示例解析
前面提到过,RDD是一个分布式的数据集,对它的操作是以分区为单位进行并行计算的。因此,这里提供的f:(Iterator[T],Iterator[B],Iterator[C])=>Iterator[V])应该对应于拉链操作的三个RDD的各个分区的Iterator[X](X表示T、B、C)。
即对三个RDD的第i个分区进行f操作,得到新的分区的Iterator[V]。
(三)zipWithUniqueId
1.功能描述
当前RDD元素进行拉链操作时,操作对象为元素和元素的索引值,从0开始。
2.示例
分区个数不同时:
3.示例解析
该操作是对RDD元素及其标号进行拉链操作,因此对分区个数没有什么限制。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。