说下spark中的transform和action

本文介绍了Spark中的Transformation和Action操作。Transformation包括map、filter、flatMap等,它们是懒策略,仅在Action触发时执行计算。Action如reduce、collect、count等用于获取结果或保存数据。了解这些操作对于有效使用Spark进行大数据处理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD

2,action是得到一个值,或者一个结果(直接将RDD cache到内存中)

所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。
 

 

transformation常见操作:

1. map(func):对调用map的RDD数据集中的每个element都使用func,然后返回一个新的RDD,这个返回的数据集是分布式的数据集
2. filter(func) : 对调用filter的RDD数据集中的每个元素都使用func,然后返回一个包含使func为true的元素构成的RDD
3. flatMap(func):和map差不多,但是flatMap生成的是多个结果
4. mapPartitions(func):和map很像,但是map是每个element,而mapPartitions是每个partition
5. mapPartitionsWithSplit(func):和mapPartitions很像,但是func作用的是其中一个split上,所以func中应该有index
6. sample(withReplacement,faction,seed):抽样
7. union(otherDataset):返回一个新的dataset,包含源dataset和给定dataset的元素的集合
8. distinct([numTasks]):返回一个新的dataset,这个dataset含有的是源dataset中的distinct的element
9. groupByKey(numTasks):返回(K,Seq[V]),也就是hadoop中reduce函数接受的key-valuelist
10. reduceByKey(func,[numTasks]):就是用一个给定的reduce func再作用在groupByKey产生的(K,Seq[V]),比如求和,求平均数
11. sortByKey([ascending],[numTasks]):按照key来进行排序,是升序还是降序,ascending是boolean类型
12. join(otherDataset,[numTasks]):当有两个KV的dataset(K,V)和(K,W),返回的是(K,(V,W))的dataset,numTasks为并发的任务数
13. cogroup(otherDataset,[numTasks]):当有两个KV的dataset(K,V)和(K,W),返回的是(K,Seq[V],Seq[W])的dataset,numTasks为并发的任务数
14. cartesian(otherDataset):笛卡尔积就是m*n,大家懂的

 

action常见操作:

1. reduce(func):说白了就是聚集,但是传入的函数是两个参数输入返回一个值,这个函数必须是满足交换律和结合律的
2. collect():一般在filter或者足够小的结果的时候,再用collect封装返回一个数组
3. count():返回的是dataset中的element的个数
4. first():返回的是dataset中的第一个元素
5. take(n):返回前n个elements,这个士driver program返回的
6. takeSample(withReplacement,num,seed):抽样返回一个dataset中的num个元素,随机种子seed
7. saveAsTextFile(path):把dataset写到一个text file中,或者hdfs,或者hdfs支持的文件系统中,spark把每条记录都转换为一行记录,然后写到file中
8. saveAsSequenceFile(path):只能用在key-value对上,然后生成SequenceFile写到本地或者hadoop文件系统
9. countByKey():返回的是key对应的个数的一个map,作用于一个RDD
10. foreach(func):对dataset中的每个元素都使用func

 

转载于:https://my.oschina.net/134596/blog/3037972

Spark中的操作分为两类:转换操作(Transformations)行动操作(Actions)。 Transformations(转换操作)是指将一个RDD转换为另一个RDD的操作。这些操作不会立即执行,而是返回一个新的RDD,只有在遇到行动操作时才会执行。 以下是一些常见的Transformations操作: - map(func):传入一个函数,对RDD中每个元素进行映射操作,返回新的RDD。 - filter(func):传入一个函数,对RDD中的每个元素进行过滤操作,返回一个包含符合条件的元素的新RDD。 - flatMap(func):传入一个函数,对RDD中每个元素进行映射操作,并返回多个元素,最终生成新的RDD。 - distinct([numTasks])):返回一个去重后的RDD。 - groupByKey([numTasks]):按照Key进行分组,返回一个(K, Iterable[V])的RDD。 - reduceByKey(func, [numTasks]):按照Key进行分组,然后对每个Key的Value进行reduce操作,返回一个(K, V)的RDD。 Actions(行动操作)是触发Spark计算的操作,会执行Transformations操作生成的计算图,并返回计算结果。 以下是一些常见的Actions操作: - collect():将RDD中的所有元素收集到Driver端。 - count():返回RDD中元素的个数。 - first():返回RDD中的第一个元素。 - take(n):返回RDD中前n个元素。 - reduce(func):对RDD中的元素进行reduce操作。 - foreach(func):对RDD中的每个元素执行给定的函数。 以上是Spark中常见的TransformationsActions,还有一些其他的操作,如join、union、distinct、sortBy等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值