作用: 拉链操作. 需要注意的是, 在 Spark 中, 两个 RDD 的元素的数量和分区数都必须相同, 否则会抛出异常.(在 scala 中, 两个集合的长度可以不同)
    其实本质就是要求的每个分区的元素的数量相同.

    类似算子: zipWithIndex, zipPartitions

    1. import org.apache.spark.rdd.RDD
    2. import org.apache.spark.{SparkConf, SparkContext}
    3. object Spark12_Transformation_doubleValue1 {
    4. def main(args: Array[String]): Unit = {
    5. val conf: SparkConf = new SparkConf().setAppName("SparkCoreTest").setMaster("local[*]")
    6. val sc: SparkContext = new SparkContext(conf)
    7. val rdd1: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)
    8. val rdd2: RDD[Int] = sc.makeRDD(List(4, 5, 6, 7), 2)
    9. //拉链
    10. //要求:分区数必须一致,分区中元素的个数必须一致
    11. //Can only zip RDDs with same number of elements in each partition
    12. //Can't zip RDDs with unequal numbers of partitions
    13. val newRDD5: RDD[(Int, Int)] = rdd1.zip(rdd2)
    14. newRDD5.collect().foreach(println)
    15. /*输出
    16. (1,4)
    17. (2,5)
    18. (3,6)
    19. (4,7)
    20. */
    21. sc.stop()
    22. }
    23. }