Spark之Action操作

原创 2016年05月31日 22:50:07
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)

Spark中的各种action算子操作(java版)

在我看来,Spark编程中的action算子的作用就像一个触发器,用来触发之前的transformation算子。transformation操作具有懒加载的特性,你定义完操作之后并不会立即加载,只有...
  • kongshuchen
  • kongshuchen
  • 2016年05月08日 09:12
  • 3908

spark常用函数:transformation和action

1、RDD提供了两种类型的操作:transformation和action 所有的transformation都是采用的懒策略,如果只是将transformation提交是不会执行计算的,计算只有在...
  • qq_16365849
  • qq_16365849
  • 2016年02月19日 15:20
  • 7873

Spark总结(三)——RDD的Action操作

1、foreach操作:对RDD中的每个元素执行f函数操作,返回Unit。def funOps1(): Unit = { var rdd1 = sc.parallelize(List(1, 2, ...
  • zzh118
  • zzh118
  • 2016年07月27日 19:17
  • 681

Spark RDD Action 详解---Spark学习笔记8

Spark RDD Action 详解配有实际例子
  • u014388509
  • u014388509
  • 2014年04月04日 17:46
  • 12123

Spark中的各种action算子操作(scala版)

这里直接贴代码了,action的介绍都在java那里。 package cn.spark.study.coreimport org.apache.spark.SparkConf import or...
  • kongshuchen
  • kongshuchen
  • 2016年05月08日 09:15
  • 731

spark RDD transformation和action操作

spark RDD transformation和action 1.启用spark-shell,使用根目录下的test.txt作为文件的示例 scala> sc res30: org.apache.s...
  • qq_20545159
  • qq_20545159
  • 2015年12月09日 14:14
  • 649

Spark核心类:弹性分布式数据集RDD及其转换和操作pyspark.RDD

http://blog.csdn.net/pipisorry/article/details/53257188弹性分布式数据集RDD(Resilient Distributed Dataset)创建R...
  • pipisorry
  • pipisorry
  • 2016年11月21日 11:02
  • 4698

【机器学习】pyspark中RDD的若干操作

pyspark中RDD的若干操作
  • w417950004
  • w417950004
  • 2017年11月28日 10:49
  • 341

【Spark】RDD操作详解1——Transformation和Actions概况

Spark算子的作用下图描述了Spark在运行转换中通过算子对RDD进行转换。 算子是RDD中定义的函数,可以对RDD中的数据进行转换和操作。 输入:在Spark程序运行中,数据从外部数据空间(如分布...
  • JasonDing1354
  • JasonDing1354
  • 2015年07月11日 22:46
  • 5968

Spark常用函数讲解--Action操作

http://www.cnblogs.com/MOBIN/p/5414490.html 摘要: RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ...
  • zdy0_2004
  • zdy0_2004
  • 2016年04月20日 23:37
  • 610
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark之Action操作
举报原因:
原因补充:

(最多只允许输入30个字)