一、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());
}