Spark的transformation和action算子简介

transformation算子

map(func)

返回一个新的分布式数据集,由每个原元素经过func函数处理后的新元素组成

filter(func)

返回一个新的数据集,由经过func函数处理后返回值为true的原元素组成

flatMap(func)

类似于map,但是每一个输入元素,会被映射为0个或多个输出元素,(因此,func函数的返回值是一个seq,而不是单一元素)

mapPartitions(func)

类似于map,对RDD的每个分区起作用,在类型为T的RDD上运行时,func的函数类型必须是Iterator[T]=>Iterator[U]

sample(withReplacement,fraction,seed)

根据给定的随机种子seed,随机抽样出数量为fraction的数据

pipe(command,[envVars])

通过管道的方式对RDD的每个分区使用shell命令进行操作,返回对应的结果

union(otherDataSet)

返回一个新的数据集,由原数据集合参数联合而成

intersection(otherDataset)

求两个RDD的交集

distinct([numtasks])

返回一个包含源数据集中所有不重复元素的i新数据集

groupByKey([numtasks])

在一个由(K,v)对组成的数据集上调用,返回一个(K,Seq[V])对组成的数据集。默认情况下,输出结果的并行度依赖于父RDD的分区数目,如果想要对key进行聚合的话,使用reduceByKey或者combineByKey会有更好的性能

reduceByKey(func,[numTasks])

在一个(K,V)对的数据集上使用,返回一个(K,V)对的数据集,key相同的值,都被使用指定的reduce函数聚合到一起,reduce任务的个数是可以通过第二个可选参数来配置的

sortByKey([ascending],[numTasks])

在类型为(K,V)的数据集上调用,返回以K为键进行排序的(K,V)对数据集,升序或者降序有boolean型的ascending参数决定

join(otherDataset,[numTasks])

在类型为(K,V)和(K,W)类型的数据集上调用,返回一个(K,(V,W))对,每个key中的所有元素都在一起的数据集

cogroup(otherDataset,[numTasks])

在类型为(K,V)和(K,W)类型的数据集上调用,返回一个数据集,组成元素为(K,Iterable[V],Iterable[W]) tuples

cartesian(otherDataset)

笛卡尔积,但在数据集T和U上调用时,返回一个(T,U)对的数据集,所有元素交互进行笛卡尔积

coalesce(numPartitions)

对RDD中的分区减少指定的数目,通常在过滤完一个大的数据集之后进行此操作

repartition(numpartitions)

将RDD中所有records平均划分到numparitions个partition中


action算子

reduce(func)

通过函数func聚集数据集中的所有元素,这个函数必须是关联性的,确保可以被正确的并发执行

collect()

在driver的程序中,以数组的形式,返回数据集的所有元素,这通常会在使用filter或者其它操作后,返回一个足够小的数据子集再使用

count()

返回数据集的元素个数

first()

返回数据集的第一个元素(类似于take(1))

take(n)

返回一个数组,由数据集的前n个元素组成。注意此操作目前并非并行执行的,而是driver程序所在机器

takeSample(withReplacement,num,seed)

返回一个数组,在数据集中随机采样num个元素组成,可以选择是否用随机数替换不足的部分,seed用于指定的随机数生成器种子

saveAsTextFile(path)

将数据集的元素,以textfile的形式保存到本地文件系统hdfs或者任何其他Hadoop支持的文件系统,spark将会调用每个元素的toString方法,并将它转换为文件中的一行文本

takeOrderd(n,[ordering])

排序后的limit(n)

saveAsSequenceFile(path)

将数据集的元素,以sequencefile的格式保存到指定的目录下,本地系统,hdfs或者任何其他hadoop支持的文件系统,RDD的元素必须由key-value对组成。并都实现了hadoop的writable接口或隐式可以转换为writable

saveAsObjectFile(path)

使用Java的序列化方法保存到本地文件,可以被sparkContext.objectFile()加载
countByKey()
对(K,V)类型的RDD有效,返回一个(K,Int)对的map,表示每一个可以对应的元素个数

foreach(func)

在数据集的每一个元素上,运行函数func,t通常用于更新一个累加器变量,或者和外部存储系统做交互

原文地址:http://blog.51cto.com/simplelife/2336988

时间: 2024-08-02 18:02:39

Spark的transformation和action算子简介的相关文章

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

在我看来,Spark编程中的action算子的作用就像一个触发器,用来触发之前的transformation算子.transformation操作具有懒加载的特性,你定义完操作之后并不会立即加载,只有当某个action的算子执行之后,前面所有的transformation算子才会全部执行.常用的action算子如下代码所列:(java版) package cn.spark.study.core; import java.util.Arrays; import java.util.List; im

Spark的transformation 和 action的操作学习笔记

一.spark的transformation 和 action区别 Spark有一些基本的transformation 和 action的操作,其中transformation形成各类型的RDD,action不形成RDD,而是对RDD进行累加.合并.保存操作. 二.transformation 有哪些 transformation有map.filter.flatMap(与map不一样).Sample.groupByKey.ReduceByKey.Union.Join.cogroup.crossP

大数据教程:Transformation和Action算子演示

一.Transformation算子演示 val conf = new SparkConf().setAppName("Test").setMaster("local")      val sc = new SparkContext(conf) //通过并行化生成rdd    val rdd = sc.parallelize(List(5,6,4,7,3,8,2,9,10)) //map:对rdd里面每一个元乘以2然后排序    val rdd2: RDD[Int]

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(五)Spark之Transformation和Action

Transformation算子 基本的初始化 java static SparkConf conf = null; static JavaSparkContext sc = null; static { conf = new SparkConf(); conf.setMaster("local").setAppName("TestTransformation"); sc = new JavaSparkContext(conf); } scala private v

【Spark】RDD操作具体解释4——Action算子

本质上在Actions算子中通过SparkContext运行提交作业的runJob操作,触发了RDD DAG的运行. 依据Action算子的输出空间将Action算子进行分类:无输出. HDFS. Scala集合和数据类型. 无输出 foreach 对RDD中的每一个元素都应用f函数操作,不返回RDD和Array,而是返回Uint. 图中.foreach算子通过用户自己定义函数对每一个数据项进行操作. 本例中自己定义函数为println,控制台打印全部数据项. 源代码: /** * Applie

【Spark】RDD操作详解4——Action算子

本质上在Actions算子中通过SparkContext执行提交作业的runJob操作,触发了RDD DAG的执行. 根据Action算子的输出空间将Action算子进行分类:无输出. HDFS. Scala集合和数据类型. 无输出 foreach 对RDD中的每个元素都应用f函数操作,不返回RDD和Array,而是返回Uint. 图中,foreach算子通过用户自定义函数对每个数据项进行操作. 本例中自定义函数为println,控制台打印所有数据项. 源码: /** * Applies a f

03、操作RDD(transformation和action案例实战)

1.transformation和action介绍 Spark支持两种RDD操作:transformation和action.transformation操作会针对已有的RDD创建一个新的RDD:而action则主要是对RDD进行最后的操作,比如遍历.reduce.保存到文件等,并可以返回结果给Driver程序. 例如,map就是一种transformation操作,它用于将已有RDD的每个元素传入一个自定义的函数,并获取一个新的元素,然后将所有的新元素组成一个新的RDD.而reduce就是一种

Spark RDD Transformation 简单用例(三)

cache和persist 将RDD数据进行存储,persist(newLevel: StorageLevel)设置了存储级别,cache()和persist()是相同的,存储级别为MEMORY_ONLY.因为RDD的transformation是lazy的,只有action算子才会触发transformain真正的执行,如果一个rdd需要进行多次的action算子操作,最好能够使用cache或persist将rdd缓存至内存中,这样除第一次action会触发transformation操作,后