Rdd的操作

作者: 大数据修行 | 来源:发表于2019-05-20 10:54 被阅读0次

    1.transformation

    lazy:仅仅记录transformation路径,不发生操作

    1. map 对每一个元素进行转换
    2. filter 对元素进行过滤
      3.flatmap 把每个元素里面的元素展开

    例子

    val nums = sc.parallelize(List(1,2,3,4,5,6,7,8,9))
    nums.flatMap(x => 1 to x).collect
    res7: Array[Int] = Array(1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9)
    

    4.mapValues 对每个元素里面的value转换
    5.substract 求两个rdd相减
    6.intersection 求两个rdd并集
    7.cartesian 求两个rdd笛卡尔积

    scala> val a = sc.parallelize(Array(1,2,3,4,5))
    scala> val b = sc.parallelize(Array(1,2,6))
    
    scala> a.subtract(b).collect
    res28: Array[Int] = Array(4, 3, 5)
    
    scala> a.intersection(b).collect
    res30: Array[Int] = Array(2, 1)
    
    scala> a.cartesian(b).collect
    res32: Array[(Int, Int)] = Array((1,1), (2,1), (1,2), (1,6), (2,2), (2,6), (3,1), (4,1), (5,1), (3,2), (3,6), (4,2), (4,6), (5,2), (5,6))
    
    

    2.action

    action的时候,才进行计算
    1.collect 返回所有元素的集合
    2.count 求元素数量
    3.reduce 依次计算
    4.top 求最大的元素元素,可以自己设置排序方式
    5.takeSample 求随机
    6.takeOrdered 与top排序方式相反

    3.cache

    相关文章

      网友评论

        本文标题:Rdd的操作

        本文链接:https://www.haomeiwen.com/subject/hafgoqtx.html