- first、take、collect、count、top、takeOrdered、foreach、fold、reduce、countByValue、lookup
- 算法解释
- first:返回第一个元素
- take:rdd.take(n)返回第n个元素
- collect:rdd.collect() 返回 RDD 中的所有元素
- count:rdd.count() 返回 RDD 中的元素个数
- top:按照降序的或者指定的排序规则,返回前n个元素
- takeOrdered:对RDD元素进行升序排序,取出前n个元素并返回,也可以自定义比较器(这里不介绍),类似于top的相反的方法
- foreach:循环RDD中的每个元素
- fold:rdd.fold(num)(func) 一般不用这个函数和 reduce() 一 样, 但是提供了初始值num,每个元素计算时,先要合这个初始值进行折叠, 注意,这里会按照每个分区进行fold,然后分区之间还会再次进行fold
- reduce:并行整合RDD中所有数据, 类似于是scala中集合的reduce
- countByValue:各元素在 RDD 中出现的次数 返回{(key1,次数),(key2,次数),…(keyn,次数)}
- Lookup函数对(Key,Value)型的RDD操作,返回指定Key对应的元素形成的Seq。 这个函数处理优化的部分在于,如果这个RDD包含分区器,则只会对应处理K所在的分区,然后返回由(K,V)形成的Seq。 如果RDD不包含分区器,则需要对全RDD元素进行暴力扫描处理,搜索指定K对应的元素。
- scala代码
var arrays = Array(1,2,3,4,5,6) var arrayRDD = sc.parallelize(arrays) println("first:" + arrayRDD.first()) println("take:" + arrayRDD.take(2).mkString(",")) println("takeOrdered:" + arrayRDD.takeOrdered(2).mkString(",")) println("fold:" + arrayRDD.fold(2)((x, y) => x + y)) println("collect:" + arrayRDD.collect().mkString(",")) println("count:" + arrayRDD.count()) println("top:" + arrayRDD.top(3).mkString(",")) println("reduce:" + arrayRDD.reduce((x, y) => x + y)) println("countByValue:" + arrayRDD.countByValue()) var rdd1 = sc.parallelize(List((1, "a"), (2, "b"), (3, "c"))) println("lookup:" + rdd1.lookup(2))
- 过滤结果
first:1 take:1,2 takeOrdered:1,2 fold:27 collect:1,2,3,4,5,6 count:6 top:6,5,4 foreach:123456 countByValue:Map(5 -> 1, 1 -> 1, 6 -> 1, 2 -> 1, 3 -> 1, 4 -> 1) lookup:WrappedArray(b)
spark RDD常用算子(三)
猜你喜欢
转载自blog.csdn.net/u010020897/article/details/83617365
今日推荐
周排行