transformation and action of spark

原创 2016年08月30日 15:58:07

转换(transformation)

下面的列表列出了一些通用的转换。 请参考 RDD API doc (ScalaJava, Python) 和 pair RDD functions doc (ScalaJava) 了解细节.

 转换 含义
map(func) 返回一个新分布式数据集,由每一个输入元素经过func函数转换后组成
filter(func) 返回一个新数据集,由经过func函数计算后返回值为true的输入元素组成
flatMap(func) 类似于map,但是每一个输入元素可以被映射为0或多个输出元素(因此func应该返回一个序列,而不是单一元素)
mapPartitions(func) 类似于map,但独立地在RDD的每一个分块上运行,因此在类型为T的RDD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]
mapPartitionsWithSplit(func) 类似于mapPartitions, 但func带有一个整数参数表示分块的索引值。因此在类型为T的RDD上运行时,func的函数类型必须是(Int, Iterator[T]) => Iterator[U]
sample(withReplacement,fractionseed) 根据fraction指定的比例,对数据进行采样,可以选择是否用随机数进行替换,seed用于指定随机数生成器种子
union(otherDataset) 返回一个新的数据集,新数据集是由源数据集和参数数据集联合而成
distinct([numTasks])) 返回一个包含源数据集中所有不重复元素的新数据集
groupByKey([numTasks]) 在一个(K,V)对的数据集上调用,返回一个(K,Seq[V])对的数据集
注意:默认情况下,只有8个并行任务来做操作,但是你可以传入一个可选的numTasks参数来改变它
reduceByKey(func, [numTasks]) 在一个(K,V)对的数据集上调用时,返回一个(K,V)对的数据集,使用指定的reduce函数,将相同key的值聚合到一起。类似groupByKeyreduce任务个数是可以通过第二个可选参数来配置的
aggregateByKey(zeroValue)(seqOp,combOp, [numTasks]) 根据提供的函数进行聚合。When called on a dataset of (K, V) pairs, returns a dataset of (K, U) pairs where the values for each key are aggregated using the given combine functions and a neutral "zero" value. Allows an aggregated value type that is different than the input value type, while avoiding unnecessary allocations. Like ingroupByKey, the number of reduce tasks is configurable through an optional second argument.
sortByKey([ascending], [numTasks]) 在一个(K,V)对的数据集上调用,K必须实现Ordered接口,返回一个按照Key进行排序的(K,V)对数据集。升序或降序由ascending布尔参数决定
join(otherDataset, [numTasks]) 在类型为(K,V)和(K,W)类型的数据集上调用时,返回一个相同key对应的所有元素对在一起的(K, (V, W))数据集
cogroup(otherDataset, [numTasks]) 在类型为(K,V)和(K,W)的数据集上调用,返回一个 (K, Seq[V], Seq[W])元组的数据集。这个操作也可以称之为groupwith
cartesian(otherDataset) 笛卡尔积,在类型为 T 和 U 类型的数据集上调用时,返回一个 (T, U)对数据集(两两的元素对)
pipe(command,[envVars]) Pipe each partition of the RDD through a shell command, e.g. a Perl or bash script. RDD elements are written to the process's stdin and lines output to its stdout are returned as an RDD of strings.
coalesce(numPartitions) Decrease the number of partitions in the RDD to numPartitions. Useful for running operations more efficiently after filtering down a large dataset.
repartition(numPartitions) Reshuffle the data in the RDD randomly to create either more or fewer partitions and balance it across them. This always shuffles all data over the network.

动作(actions)

下面的列表列出了一些通用的action操作. 请参考 RDD API doc (ScalaJava, Python) 和 pair RDD functions doc (Scala,Java) 了解细节.

 动作 含义
reduce(func) 通过函数func(接受两个参数,返回一个参数)聚集数据集中的所有元素。这个功能必须可交换且可关联的,从而可以正确的被并行执行。
collect() 在驱动程序中,以数组的形式,返回数据集的所有元素。这通常会在使用filter或者其它操作并返回一个足够小的数据子集后再使用会比较有用。
count() 返回数据集的元素的个数。
first() 返回数据集的第一个元素(类似于take(1))
take(n) 返回一个由数据集的前n个元素组成的数组。注意,这个操作目前并非并行执行,而是由驱动程序计算所有的元素
takeSample(withReplacement,numseed) 返回一个数组,在数据集中随机采样num个元素组成,可以选择是否用随机数替换不足的部分,Seed用于指定的随机数生成器种子
takeOrdered(n,[ordering]) Return the firstn elements of the RDD using either their natural order or a custom comparator.
saveAsTextFile(path) 将数据集的元素,以textfile的形式,保存到本地文件系统,HDFS或者任何其它hadoop支持的文件系统。对于每个元素,Spark将会调用toString方法,将它转换为文件中的文本行
saveAsSequenceFile(path) 将数据集的元素,以Hadoop sequencefile的格式,保存到指定的目录下,本地系统,HDFS或者任何其它hadoop支持的文件系统。这个只限于由key-value对组成,并实现了Hadoop的Writable接口,或者隐式的可以转换为Writable的RDD。(Spark包括了基本类型的转换,例如Int,Double,String,等等)
saveAsObjectFile(path)
(Java and Scala)
Write the elements of the dataset in a simple format using Java serialization, which can then be loaded usingSparkContext.objectFile().
countByKey() 对(K,V)类型的RDD有效,返回一个(K,Int)对的Map,表示每一个key对应的元素个数
foreach(func) 在数据集的每一个元素上,运行函数func进行更新。这通常用于边缘效果,例如更新一个累加器,或者和外部存储系统进行交互,例如HBase
版权声明:本文为博主原创文章,未经博主允许不得转载。

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

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

Spark转换(transform)与动作(action)一览

【说的很特么抽象,能看得懂算你厉害啊,所以代码详解:一个Spark Demo与代码详解 以下func,大部分时候为了让逻辑更清楚,推荐使用匿名函数!(lambda)】 【ps:java和pytho...
  • CalicoBox
  • CalicoBox
  • 2017年08月04日 17:59
  • 265

Spark常用的Transformation算子的简单例子

Spark的常用Transformation算子有map、filter、flatMap、reduceByKey、groupByKey、join、leftOuterJoin、rightOuterJoin...
  • u010110208
  • u010110208
  • 2016年08月13日 18:16
  • 1497

Spark基础的transformation 和 action的函数操作

Spark基础的transformation和 action的函数操作 函数示例: map函数: 操作数据集: In [1]: rdd = sc.textFile(...
  • forever19870418
  • forever19870418
  • 2017年03月15日 13:57
  • 251

用Java理解Spark算子之Transformation算子

前言RDD算子分类,大致可以分为两类,即: Transformation:转换算子,这类转换并不触发提交作业,完成作业中间过程处理。 Action:行动算子,这类算子会触发SparkContext...
  • qq_28945021
  • qq_28945021
  • 2016年06月07日 07:53
  • 2594

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

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

spark笔记二之Spark程序模型Transformation算子与action算子

Spark程序模型textFile读取文件val file=sc.textFile(“hdfs://192.168.192.137:9000/data/t1.csv”) filter函数过滤带“a”...
  • q383700092
  • q383700092
  • 2017年01月03日 15:47
  • 341

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
  • 601

Spark RDD 的Transformation与Action的常用功能总结(Python版本)

本文主要演示如何通过Python对Spark的RDD进行编程,只列出了一些常用的RDD操作接口,完整的功能,请参考官方文档 演示环境说明 RDD的详细介绍请参考:http://blog.csdn...
  • sun7545526
  • sun7545526
  • 2016年04月01日 16:26
  • 1771

Spark RDD 的Transformation与Action的常用功能总结(Python版本)

转载自:http://blog.csdn.net/eric_sunah/article/details/51037837 本文主要演示如何通过Python对Spark的RDD进行...
  • Eason_oracle
  • Eason_oracle
  • 2017年12月28日 16:59
  • 93
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:transformation and action of spark
举报原因:
原因补充:

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