大数据学习之路

Rdd的操作

2019-05-20  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读