《Spark Streaming实时流式大数据处理实战》 ——3.3.2 Action操作

举报
华章计算机 发表于 2020/02/22 16:39:09 2020/02/22
【摘要】 本节书摘来自华章计算机《Spark Streaming实时流式大数据处理实战》 —— 书中第3章,第3.3.2节,作者是肖力涛 。

3.3.2  Action操作

  不同于Transformation操作,Action操作代表一次计算的结束,不再产生新的RDD,将结果返回到Driver程序。所以Transformation操作只是建立计算关系,而Action操作才是实际的执行者。每个Action操作都会调用SparkContext的runJob方法向集群正式提交请求,所以每个Action操作对应一个Job。

* count():RDD[T]=>Long,返回数据集的元素个数。

* countByKey():RDD[T]=>Map[T,Long],对(K,V)类型的RDD有效,返回一个(K,Int)对的Map,表示每一个key对应的元素个数。

* collect():RDD[T]=>Seq[T],将所有数据集以数组的形式汇总在Driver节点,需要注意的是,如果数据集很大,会“撑爆”Driver节点的内存,所以通常需要做些filter操作后,将一个子数据集合并在Driver节点。

* reduce(f:(T,T)=>T) : RDD[T]=>T,该函数有点像斐波那契数列,会将RDD内部的数据集按照顺序两两合并,直到产生最后一个值为止,并将其返回。即首先合并前两个元素,将结果与第三个元素合并,以此类推。

* saveAsTextFile(path:String),数据集内部的元素会调用其toString方法,转换为字符串形式,然后根据传入的路径保存成文本文件,既可以是本地文件系统,也可以是HDFS等。

* saveAsSequenceFile(path:String),数据集内部的元素,以Hadoop序列化文件的格式(sequence file),保存到指定的目录下‘本地系统’HDFS或者任何Hadoop支持的文件系统中。该操作要求RDD数据由key-value对组成,并实现了Hadoop的Writable接口,或者隐式地可以转换为Writable的RDD。

* saveAsObjectFile(path:String),利用Java的Serialization接口进行持久化操作,之后可以使用SparkContext.objectFile()重新load回内存。

* take(n),将数据集的前n个元素提取出来,汇总到Driver节点,以数组的形式返回。

* takeSample(withReplacement, num, [seed]),与take类似,只不过该操作会根据num和seed进行随机采样数据元素,然后汇总成数组,其中withReplacement参数可以设置是否放回采样。

* takeOrdered(n, [ordering]),返回前n个元素,可以使用元素的自然顺序,也可以使用用户自定义comparator。

* first(),返回数据集中的第一个元素,等同于take(1)操作。

* foreach(func),将函数func应用在数据集的每一个元素上,通常用于更新一个累加器,或者和外部存储系统进行交互,例如Redis。关于foreach,在后续章节中还会使用,到时会详细介绍它的使用方法及注意事项。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。