作用: 拉链操作. 需要注意的是, 在 Spark 中, 两个 RDD 的元素的数量和分区数都必须相同, 否则会抛出异常.(在 scala 中, 两个集合的长度可以不同)
其实本质就是要求的每个分区的元素的数量相同.
类似算子: zipWithIndex, zipPartitions
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark12_Transformation_doubleValue1 {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setAppName("SparkCoreTest").setMaster("local[*]")
val sc: SparkContext = new SparkContext(conf)
val rdd1: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)
val rdd2: RDD[Int] = sc.makeRDD(List(4, 5, 6, 7), 2)
//拉链
//要求:分区数必须一致,分区中元素的个数必须一致
//Can only zip RDDs with same number of elements in each partition
//Can't zip RDDs with unequal numbers of partitions
val newRDD5: RDD[(Int, Int)] = rdd1.zip(rdd2)
newRDD5.collect().foreach(println)
/*输出
(1,4)
(2,5)
(3,6)
(4,7)
*/
sc.stop()
}
}