zoukankan      html  css  js  c++  java
  • Spark RDD编程(2) 双Value类型交互

    所谓双Value,就是两个数据集RDD之间进行操作。

    1 union(otherDataset):对源RDD和参数RDD合并后返回一个新的RDD,不会去重

    val listRDD1: RDD[Int] = sc.makeRDD(1 to 5)
    val listRDD2: RDD[Int] = sc.makeRDD(5 to 10)
    
    val union: Array[Int] = listRDD1.union(listRDD2).collect()
    println(union.mkString(",")) //1,2,3,4,5,5,6,7,8,9,10
    

    2 subtract (otherDataset):计算差的一种函数,去除两个RDD中相同的元素,不同的RDD将保留下来

    val listRDD3: RDD[Int] = sc.makeRDD(1 to 8)
    val listRDD4: RDD[Int] = sc.makeRDD(4 to 10)
    val subtract: Array[Int] = listRDD3.subtract(listRDD4).collect()
    println(subtract.mkString(",")) //1,2,3
    

    3 intersection(otherDataset):对源RDD和参数RDD求交集后返回一个新的RDD

    val listRDD5: RDD[Int] = sc.makeRDD(1 to 4)
    val listRDD6: RDD[Int] = sc.makeRDD(2 to 6)
    val intersection: Array[Int] = listRDD5.intersection(listRDD6).collect()
    println(intersection.mkString(",")) //4,2,3
    

    4 cartesian(otherDataset):笛卡尔积(尽量避免使用)

    val listRDD7: RDD[Int] = sc.makeRDD(1 to 3)
    val listRDD8: RDD[Int] = sc.makeRDD(4 to 6)
    val cartesian: Array[(Int, Int)] = listRDD7.cartesian(listRDD8).collect()
    println(cartesian.mkString(",")) //(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)
    

      

    5 zip(otherDataset):将两个RDD组合成Key/Value形式的RDD,这里默认两个RDDpartition数量以及元素数量都相同,否则会抛出异常。

    val listRDD9: RDD[Int] = sc.makeRDD(1 to 4, 3)
    val listRDD10: RDD[Char] = sc.makeRDD(List('a', 'b', 'c', 'd'), 3)
    val zip: Array[(Int, Char)] = listRDD9.zip(listRDD10).collect()
    println(zip.mkString(",")) //(1,a),(2,b),(3,c),(4,d)
    

      

  • 相关阅读:
    FastDFS集群安装说明
    关于Sentaurus的日常(一)(Basics)
    关于Sentaurus的日常(三)
    记录程序运行时间之clock 函数
    Mysql 使用经验 2013
    proxy ip 收集方式总结
    操作系统的默认格式的陷阱
    VNC server 使用手记
    div body 间距
    asp.net处女作
  • 原文地址:https://www.cnblogs.com/noyouth/p/12984406.html
Copyright © 2011-2022 走看看