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

【说的很特么抽象,能看得懂算你厉害啊,所以代码详解 :一个Spark Demo与代码详解
以下func,大部分时候为了让逻辑更清楚,推荐使用匿名函数!(lambda)】
【ps:java和python的api是一样的,名字和参数没有变化】
转换含义
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,fraction, seed)根据 fraction 指定的比例,对数据进行采样,可以选择是否用随机数进行替换,seed 用于指定随机数生成器种子
union(otherDataset)返回一个新的数据集,新数据集是由源数据集和参数数据集联合而成
distinct([numTasks]))返回一个包含源数据集中所有不重复元素的新数据集
groupByKey([numTasks])在一个键值对的数据集上调用,返回一个(K,Seq[V])对的数据集 。注意:默认情况下,只有8个并行任务来做操作,但是你可以传入一个可选的 numTasks 参数来改变它
reduceByKey(func, [numTasks])在一个键值对的数据集上调用时,返回一个键值对的数据集,使用指定的 reduce 函数,将相同 key 的值聚合到一起。类似 groupByKey,reduce 任务个数是可以通过第二个可选参数来配置的
sortByKey([ascending], [numTasks])在一个键值对的数据集上调用,K 必须实现 Ordered 接口,返回一个按照 Key 进行排序的键值对数据集。升序或降序由 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])对 RDD 进行管道操作
coalesce(numPartitions)减少 RDD 的分区数到指定值。在过滤大量数据之后,可以执行此操作
repartition(numPartitions)重新给 RDD 分区
repartitionAndSortWithinPartitions(partitioner)重新给 RDD 分区,并且每个分区内以记录的 key 排序

动作含义
reduce(func)通过函数 func 聚集数据集中的所有元素。这个功能必须可交换且可关联的,从而可以正确的被并行执行。
collect()在驱动程序中,以数组的形式,返回数据集的所有元素。这通常会在使用 filter 或者其它操作并返回一个足够小的数据子集后再使用会比较有用。
count()返回数据集的元素的个数。
first()返回数据集的第一个元素,类似于 take(1)
take(n)返回一个由数据集的前 n 个元素组成的数组。注意,这个操作目前并非并行执行,而是由驱动程序计算所有的元素
takeSample(withReplacement,num, seed)返回一个数组,在数据集中随机采样 num 个元素组成,可以选择是否用随机数替换不足的部分,seed 用于指定的随机数生成器种子
takeOrdered(n, [ordering])返回自然顺序或者自定义顺序的前 n 个元素
saveAsTextFile(path)将数据集的元素,以 textfile 的形式,保存到本地文件系统,HDFS或者任何其它 hadoop 支持的文件系统。对于每个元素,Spark 将会调用 toString 方法,将它转换为文件中的文本行
saveAsSequenceFile(path) (Java and Scala)将数据集的元素,以 Hadoop sequencefile 的格式保存到指定的目录下
saveAsObjectFile(path) (Java and Scala)将数据集的元素,以 Java 序列化的方式保存到指定的目录下
countByKey()对(K,V)类型的 RDD 有效,返回一个 (K,Int) 对的 Map,表示每一个key对应的元素个数
foreach(func)在数据集的每一个元素上,运行函数 func 进行更新。这通常用于边缘效果,例如更新一个累加器,或者和外部存储系统进行交互,例如 HBase
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值