Spark RDD Action操作

reduce

def reduce(f: (T, T) => T): T
通过func函数聚集RDD中的所有元素,这个功能必须是可交换且可并联的

1

2

3

4

5

6

7

8

9

10

11
scala> val rdd1 = sc.makeRDD(1 to 10,2)

rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[85] at makeRDD at <console>:24

scala> rdd1.reduce(_+_)

res50: Int = 55

scala> val rdd2 = sc.makeRDD(Array(("a",1),("a",3),("c",3),("d",5)))

rdd2: org.apache.spark.rdd.RDD[(String, Int)] = ParallelCollectionRDD[86] at makeRDD at <console>:24

scala> rdd2.reduce((x,y)=>(x._1 + y._1,x._2 + y._2))

res51: (String, Int) = (adca,12)

collect

def collect(): Array[T]
在驱动程序中,以数组的形式返回数据集的所有元素

count

def count(): Long
返回RDD中的元素个数

first

def first(): T 返回RDD中的第一个元素

take

def take(num: Int): Array[T] 返回RDD中的前n个元素

takeOrdered

def takeOrdered(num: Int)(implicit ord: Ordering[T]) 返回前几个的排序

takeSample

def takeSample( withReplacement: Boolean, num: Int, seed: Long = Utils.random.nextLong): Array[T] 抽样但是返回一个scala集合。

aggregate

def aggregateU: ClassTag(seqOp: (U, T) => U, combOp: (U, U) => U): U aggregate函数将每个分区里面的元素通过seqOp和初始值进行聚合,然后用combine函数将每个分区的结果和初始值(zeroValue)进行combine操作。这个函数最终返回的类型不需要和RDD中元素类型一致。

fold

def fold(zeroValue: T)(op: (T, T) => T): T 折叠操作,aggregate的简化操作,seqop和combop一样。

saveAsTextFile

def saveAsTextFile(path: String): Unit 将RDD以文本文件的方式保存到本地或者HDFS中

saveAsObjectFile

def saveAsObjectFile(path: String): Unit 将RDD中的元素以序列化后对象形式保存到本地或者HDFS中。

countByKey

def countByKey(): Map[K, Long] 针对(K,V)类型的RDD,返回一个(K,Int)的map,表示每一个key对应的元素个数。

foreach

def foreach(f: T => Unit): Unit 在数据集的每一个元素上,运行函数func进行更新。

原文:大专栏  Spark RDD Action操作

原文地址:https://www.cnblogs.com/wangziqiang123/p/11618439.html

时间: 2024-10-12 00:15:58

Spark RDD Action操作的相关文章

Spark RDD Action 简单用例(二)

foreach(f: T => Unit) 对RDD的所有元素应用f函数进行处理,f无返回值./** * Applies a function f to all elements of this RDD. */def foreach(f: T => Unit): Unit scala> val rdd = sc.parallelize(1 to 9, 2) rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at p

Spark RDD Action 简单用例(一)

collectAsMap(): Map[K, V] 返回key-value对,key是唯一的,如果rdd元素中同一个key对应多个value,则只会保留一个./** * Return the key-value pairs in this RDD to the master as a Map. * * Warning: this doesn't return a multimap (so if you have multiple values to the same key, only * on

[Spark]-RDD详解之变量&amp;操作

RDD的操作 1.1 概述    RDD整体包含两大类操作 transformation 从现有中创建一个新的数据集 action 在对数据集做一定程度的计算后将结果返回        以MapReduce来说,Map就是一个transformation ,它是从每个文件块上执行一个方法来抽取转换,最终形成一个新的数据集.而Reduce就是一个action,它在对数据集执行一个函数进行计算后返回一个结果 对于所有的transformation,都是Lazy的,也就是说它不会立即执行,只是单纯的记

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

摘要: RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集RDD有两种操作算子:         Transformation(转换):Transformation属于延迟计算,当一个RDD转换成另一个RDD时并没有立即进行转换,仅仅是记住       了数据集的逻辑操作         Ation(执行):触发Spark作业的运行,真正触发转换算子的计算 本系列主要讲解Spark中常用的函数操作:   

spark transformation与action操作函数

一.Transformation map(func) 返回一个新的分布式数据集,由每个原元素经过函数处理后的新元素组成 filter(func) 返回一个新的数据集,经过fun函数处理后返回值为true的原元素组成 flatMap(func) 类似于map,但每个输入元素会被映射为0个或多个输出元素 mapPartitions(func)  类似于map,对RDD的每个分区起作用 intersection(otherDataset) 求两个RDD的交集 distinct([numTasks])

spark RDD transformation与action函数巩固 (未完)

1.创建RDD val lines = sc.parallelize(List("pandas","i like pandas")) 2.加载本地文件到RDD val linesRDD = sc.textFile("yangsy.txt") 3.过滤 filter 需要注意的是 filter并不会在原有RDD上过滤,而是根据filter的内容重新创建了一个RDD val spark = linesRDD.filter(line => lin

spark core源码分析9 从简单例子看action操作

上一节举例讲解了transformation操作,这一节以reduce为例讲解action操作 首先看submitJob方法,它将我们reduce中写的处理函数随JobSubmitted消息传递出去,因为每个分区都需要调用它进行计算: 而resultHandler是指最后合并的方法,在每个task完成后,需要调用resultHandler将最终结果合并.所以它不需要随JobSubmitted消息传递,而是保存在JobWaiter中 /** * Submit a job to the job sc

Spark的RDD简单操作

0.Spark的wc.note package RddApi import org.apache.spark.{SparkConf, SparkContext} /** * hadoop * spark * tachyon * hadoop * hbase * spark */ /** * Created by Administrator on 2016/4/23. */ object rdd0_wc { def main(args: Array[String]) { //创建环境变量 val

Java8函数式编程(二):类比Spark RDD算子的Stream流操作

1 Stream流 对集合进行迭代时,可调用其iterator方法,返回一个iterator对象,之后便可以通过该iterator对象遍历集合中的元素,这被称为外部迭代(for循环本身正是封装了其的语法糖),其示意图如下: 除此之外,还有内部迭代方法,这正是这里要说明的集合的stream()方法返回的Stream对象的一系列操作,比如,要统计一个数字列表的偶数元素个数,当使用Stream对象的操作时,如下: List<Integer> list = new ArrayList<Integ