前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spark RDD算子(九)之基本的Action操作

spark RDD算子(九)之基本的Action操作

作者头像
天涯泪小武
发布2019-05-26 15:22:49
6500
发布2019-05-26 15:22:49
举报
文章被收录于专栏:SpringCloud专栏SpringCloud专栏

first

返回第一个元素 scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.first()
res1: Int = 1

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3));
    Integer first = rdd.first();

take

rdd.take(n)返回第n个元素 scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.take(2)
res3: Array[Int] = Array(1, 2)

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3));
    List<Integer> take = rdd.take(2);

collect

rdd.collect() 返回 RDD 中的所有元素 scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.collect()
res4: Array[Int] = Array(1, 2, 3, 3)

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3));
    List<Integer> collect = rdd.collect();

count

rdd.count() 返回 RDD 中的元素个数 scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.count()
res5: Long = 4

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3));
    long count = rdd.count();

countByValue

各元素在 RDD 中出现的次数 返回{(key1,次数),(key2,次数),…(keyn,次数)} scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.countByValue()
res6: scala.collection.Map[Int,Long] = Map(1 -> 1, 2 -> 1, 3 -> 2)

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3));
    Map<Integer, Long> integerLongMap = rdd.countByValue();

reduce

rdd.reduce(func) 并行整合RDD中所有数据, 类似于是scala中集合的reduce scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.reduce((x,y)=>x+y)
res7: Int = 9

java

代码语言:javascript
复制
    Integer reduce = rdd.reduce(new Function2<Integer, Integer, Integer>() {
        @Override
        public Integer call(Integer integer, Integer integer2) throws Exception {
            return integer + integer2;
        }
    });

aggregate

和 reduce() 相 似, 但 是 通 常 返回不同类型的函数 一般不用这个函数

scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))
TODO

java

代码语言:javascript
复制

fold

rdd.fold(num)(func) 一般不用这个函数 和 reduce() 一 样, 但是提供了初始值num,每个元素计算时,先要合这个初始值进行折叠, 注意,这里会按照每个分区进行fold,然后分区之间还会再次进行fold 提供初始值 scala

代码语言:javascript
复制
// 解释 TODO 
scala> val rdd = sc.parallelize(List(1,2,3,3),2)

scala> rdd.fold(1)((x,y)=>x+y)
res8: Int = 12

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3),2);
    Integer fold = rdd.fold(1, new Function2<Integer, Integer, Integer>() {
        @Override
        public Integer call(Integer integer, Integer integer2) throws Exception {
            return integer + integer2;
        }
    });
    System.out.println(fold);
-------输出-----
12

top

rdd.top(n) 按照降序的或者指定的排序规则,返回前n个元素 scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.top(2)
res9: Array[Int] = Array(3, 3)

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3),2);
    List<Integer> top = rdd.top(2);

takeOrdered

rdd.take(n) 对RDD元素进行升序排序,取出前n个元素并返回,也可以自定义比较器(这里不介绍),类似于top的相反的方法 scala

代码语言:javascript
复制
scala> val rdd = sc.parallelize(List(1,2,3,3))

scala> rdd.takeOrdered(2)
res10: Array[Int] = Array(1, 2)

java

代码语言:javascript
复制
    JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 3),2);
    List<Integer> integers = rdd.takeOrdered(2);

foreach

对 RDD 中的每个元素使用给 定的函数 scala

代码语言:javascript
复制
    val rdd = sc.parallelize(List(1,2,3,3))
    rdd.foreach(print(_))
-----输出-----------
1233

java

代码语言:javascript
复制
    rdd.foreach(new VoidFunction<Integer>() {
       @Override
       public void call(Integer integer) throws Exception {
           System.out.println(integer);
       }
    });
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年04月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • first
  • take
  • collect
  • count
  • countByValue
  • reduce
  • aggregate
  • fold
  • top
  • takeOrdered
  • foreach
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档