Spark之Action操作
2016-05-31 22:50
330 查看
1.reduce(func):通过函数func先聚集各分区的数据集,再聚集分区之间的数据,func接收两个参数,返回一个新值,新值再做为参数继续传递给函数func,直到最后一个元素
2.collect():以数据的形式返回数据集中的所有元素给Driver程序,为防止Driver程序内存溢出,一般要控制返回的数据集大小
3.count():返回数据集元素个数
4.first():返回数据集的第一个元素
5.take(n):以数组的形式返回数据集上的前n个元素
6.top(n):按默认或者指定的排序规则返回前n个元素,默认按降序输出
7.takeOrdered(n,[ordering]): 按自然顺序或者指定的排序规则返回前n个元素
例1:
def main(args: Array[String]) {
val conf = new SparkConf().setMaster("local").setAppName("reduce")
val sc = new SparkContext(conf)
val rdd = sc.parallelize(1 to 10,2)
val reduceRDD = rdd.reduce(_ + _)
val reduceRDD1 = rdd.reduce(_ - _) //如果分区数据为1结果为 -53
val countRDD = rdd.count()
val firstRDD = rdd.first()
val takeRDD = rdd.take(5) //输出前个元素
val topRDD = rdd.top(3) //从高到底输出前三个元素
val takeOrderedRDD = rdd.takeOrdered(3) //按自然顺序从底到高输出前三个元素
println("func +: "+reduceRDD)
println("func -: "+reduceRDD1)
println("count: "+countRDD)
println("first: "+firstRDD)
println("take:")
takeRDD.foreach(x => print(x +" "))
println("\ntop:")
topRDD.foreach(x => print(x +" "))
println("\ntakeOrdered:")
takeOrderedRDD.foreach(x => print(x +" "))
sc.stop
}
输出:
func +: 55
func -: 15 //如果分区数据为1结果为 -53
count: 10
first: 1
take:
1 2 3 4 5
top:
10 9 8
takeOrdered:
1 2 3
8.countByKey():作用于K-V类型的RDD上,统计每个key的个数,返回(K,K的个数)
9.collectAsMap():作用于K-V类型的RDD上,作用与collect不同的是collectAsMap函数不包含重复的key,对于重复的key。后面的元素覆盖前面的元素
10.lookup(k):作用于K-V类型的RDD上,返回指定K的所有V值
def main(args: Array[String]) {
val conf = new SparkConf().setMaster("local").setAppName("KVFunc")
val sc = new SparkContext(conf)
val arr = List(("A", 1), ("B", 2), ("A", 2), ("B", 3))
val rdd = sc.parallelize(arr,2)
val countByKeyRDD = rdd.countByKey()
val collectAsMapRDD = rdd.collectAsMap()
println("countByKey:")
countByKeyRDD.foreach(print)
println("\ncollectAsMap:")
collectAsMapRDD.foreach(print)
sc.stop
}
输出:
countByKey:
(B,2)(A,2)
collectAsMap:
(A,2)(B,3)
2.collect():以数据的形式返回数据集中的所有元素给Driver程序,为防止Driver程序内存溢出,一般要控制返回的数据集大小
3.count():返回数据集元素个数
4.first():返回数据集的第一个元素
5.take(n):以数组的形式返回数据集上的前n个元素
6.top(n):按默认或者指定的排序规则返回前n个元素,默认按降序输出
7.takeOrdered(n,[ordering]): 按自然顺序或者指定的排序规则返回前n个元素
例1:
def main(args: Array[String]) {
val conf = new SparkConf().setMaster("local").setAppName("reduce")
val sc = new SparkContext(conf)
val rdd = sc.parallelize(1 to 10,2)
val reduceRDD = rdd.reduce(_ + _)
val reduceRDD1 = rdd.reduce(_ - _) //如果分区数据为1结果为 -53
val countRDD = rdd.count()
val firstRDD = rdd.first()
val takeRDD = rdd.take(5) //输出前个元素
val topRDD = rdd.top(3) //从高到底输出前三个元素
val takeOrderedRDD = rdd.takeOrdered(3) //按自然顺序从底到高输出前三个元素
println("func +: "+reduceRDD)
println("func -: "+reduceRDD1)
println("count: "+countRDD)
println("first: "+firstRDD)
println("take:")
takeRDD.foreach(x => print(x +" "))
println("\ntop:")
topRDD.foreach(x => print(x +" "))
println("\ntakeOrdered:")
takeOrderedRDD.foreach(x => print(x +" "))
sc.stop
}
输出:
func +: 55
func -: 15 //如果分区数据为1结果为 -53
count: 10
first: 1
take:
1 2 3 4 5
top:
10 9 8
takeOrdered:
1 2 3
8.countByKey():作用于K-V类型的RDD上,统计每个key的个数,返回(K,K的个数)
9.collectAsMap():作用于K-V类型的RDD上,作用与collect不同的是collectAsMap函数不包含重复的key,对于重复的key。后面的元素覆盖前面的元素
10.lookup(k):作用于K-V类型的RDD上,返回指定K的所有V值
def main(args: Array[String]) {
val conf = new SparkConf().setMaster("local").setAppName("KVFunc")
val sc = new SparkContext(conf)
val arr = List(("A", 1), ("B", 2), ("A", 2), ("B", 3))
val rdd = sc.parallelize(arr,2)
val countByKeyRDD = rdd.countByKey()
val collectAsMapRDD = rdd.collectAsMap()
println("countByKey:")
countByKeyRDD.foreach(print)
println("\ncollectAsMap:")
collectAsMapRDD.foreach(print)
sc.stop
}
输出:
countByKey:
(B,2)(A,2)
collectAsMap:
(A,2)(B,3)
相关文章推荐
- Unity3D写雷电游戏
- bash shell 启动方式
- 【JUnit】BeforeClass、AfterClass、Before与After示例
- <ImageSwitcher>简单学习之支持动画的图片浏览器
- Android Eclipse设置AS主题风格
- hdu1114完全背包
- MYSQL 计算经纬度距离
- 装饰者模式(附与代理模式的区别,乍看挺像)
- Ubuntu下配置和编译cpp-ethereum客户端
- 第二阶段--个人冲刺--第九天
- 任务二小练习二总结
- iOS中 create group与create folder references
- C和C++的区别:const
- 使用FFMPEG将speex音频格式转为mp3和ogg格式
- sqlalchemy 初步认识
- scala学习手记2 - scala中的循环
- 快速排序的实现
- JSOI2016 独特的树叶 树的Hash判同构
- SVN提交小结
- UGUI 实现无限滚动