Spark RDD算子(九) 基本的行动算子操作

一、first

返回第一个元素

scala

val rdd=sc.makeRDD(List(1,2,3))
rdd.first()   // 1

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1,2,3));
Integer num = rdd.first;   // 1

二、take

返回前n个元素

scala

val rdd = sc.makeRDD(List(1,2,3))
rdd.take(2)   // 1,2

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1,2,3));
List<Integer> list = rdd.take(2); //1,2

三、collect

返回 RDD 中的所有元素

scala

val rdd = sc.makeRDD(List(1,2,3))
rdd.collect.foreach(println)

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1,2,3));
List<Integer> collect= rdd.collect();
for(Integer i:collect){
    System.out.println(i)
}

四、 count

scala

val rdd = sc.makeRDD(List(1,2,3))
rdd.count.pintln  // 3

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1,2,3));
Integer cnt=rdd.count(); //3

五、countByValue

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

scala

val rdd = sc.parallelize(List(1,2,3))
rdd.countByValue.foreach(println)  //(1,1),(2,1),(3,1)

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3));
Map<Integer, Long> map = rdd.countByValue();
Set<Integer> keys = map.keySet();
for (Integer key : keys) {
    System.out.println(key+","+map.get(key));
}
输出:
2,1
1,1
3,1

六、 reduce

并行整合rdd中所有数据, 类似于是scala中集合的reduce

scala

val rdd = sc.parallelize(List(1,2,3))
rdd.reduce(_+_)   // 6

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3));
Integer reduceRdd = rdd.reduce(new Function2<Integer, Integer, Integer>() {
    @Override
    public Integer call(Integer i, Integer j) throws Exception {
        return i + j;
    }
});
System.out.println(reduceRdd);  //6

七、aggregate

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

八、fold

rdd.fold(num)(function) 一般不用这个函数
和 reduce() 一 样,但是提供了初始值num,每个元素先和这个初始值进行相加, 注意,这里会按照每个分区进行fold,然后分区之间还会再次进行fold

scala

val rdd = sc.parallelize(List(1,2,3))
println(rdd.fold(1)(_ + _).toInt)   //9   ->1+1 1+2 1+3 ->2+3+4  

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3));
Integer foldRdd = rdd.fold(1, new Function2<Integer, Integer, Integer>() {
    @Override
    public Integer call(Integer i, Integer j) throws Exception {
        return i+j;
    }
});
System.out.println(foldRdd); // 9

九、top

按照降序的或者指定的排序规则,返回前n个元素

scala

val rdd = sc.parallelize(List(1,2,3))
rdd.top(2).foreach(println)   //3,2

java

JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1,2,3));
List<Integer> top = rdd.top(2);
Iterator<Integer> iterator = top.iterator();
while(iterator.hasNext()){
    System.out.println(iterator.next());
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值