spark系列一:transaction和action介绍

spark支持两种RDD操作,transaction和action。transaction操作是对已有的RDD创建一个新的RDD;而action操作主要是正对RDD做最后的操作,比如遍历、reduce、保存到文件等,并可以返回结果给driver程序。transaction的特点就是lazy特性。即如果spark应用中定义了transaction操作,那么即使执行该应用,这些操作也不会执行。也就是说,transaction操作是不会触发spark程序的执行的,,他只是记录了对RDD所作的操作,但是不会自发的执行。只有当transaction之后接着执行了一个action操作,那么所有transaction才会执行。通过这种lazy特性,来进行底层的spark应用执行额优化,避免产生过多的中间结果。action操作会触发一个spark job的运行,从而触发action之前的所有transaction的执行,这是action的特性。
常见算子:


介绍

map

将RDD中的每个元素传入自定义函数,获取一个新的元素,然后用新的元素组成新的RDD

filter

对RDD中每个元素进行判断,如果返回true则保留,返回false则剔除。

flatMap

与map类似,但是对每个元素都可以返回一个或多个新元素。

gropuByKey

根据key进行分组,每个key对应一个Iterable<value>

reduceByKey

对每个key对应的value进行reduce操作。

sortByKey

对每个key对应的value进行排序操作。

join

对两个包含<key,value>对的RDD进行join操作,每个key join上的pair,都会传入自定义函数进行处理。

cogroup

同join,但是是每个key对应的Iterable<value>都会传入自定义函数进行处理。

介绍

reduce

将RDD中的所有元素进行聚合操作。第一个和第二个元素聚合,值与第三个元素聚合,值与第四个元素聚合,以此类推。

collect

将RDD中所有元素获取到本地客户端。

count

获取RDD元素总数。

take(n)

获取RDD中前n个元素。

saveAsTextFile

将RDD元素保存到文件中,对每个元素调用toString方法

countByKey

对每个key对应的值进行count计数。

foreach

遍历RDD中的每个元素。




fj.pngtransformation和action原理剖析.png
 
bb

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30541278/viewspace-2153498/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30541278/viewspace-2153498/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值