1.transformation
lazy:仅仅记录transformation路径,不发生操作
- map 对每一个元素进行转换
- 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排序方式相反
网友评论