【RDD】Transformations

本文详细介绍了Spark中RDD Transformations的概念,包括Narrow和Wider Transformation的区别,以及map、filter、groupByKey等操作的特性。重点强调了惰性计算和RDD谱系在Spark中的作用,以及Wider Transformation因数据shuffle带来的性能影响。

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

RDD Transformations是Spark在RDD上执行的操作,它会产生一个或多个新的RDD。由于RDD在本质上是不可变的,Transformations总是创建新的RDD,而不更新现有的RDD,因此,这就创建了一个RDD lineage

RDD谱系(RDD Lineage)也被称为RDD操作图或RDD依赖图。

RDD Transformations是惰性操作(lazy operations),这意味着除非在Spark RDD上调用一个action,否则不会执行任何Transformation。由于RDD是不可变的,任何对它的转换都会导致一个新的RDD,并保持当前RDD不变。

Transformations分为2种:

Narrow Transformation

Narrow Transformation是map()和filter()函数的结果,这些计算数据位于单个分区上,这意味着不会有任何数据在分区之间移动来执行窄转换。


map()、mapPartition()、flatMap()、filter()、union()等函数是Narrow Transformation的一些例子 

Wider Transformation

Wider Transformation是groupByKey()和reduceByKey()函数计算的结果,这些计算数据位于许多分区上,这意味着将在分区之间进行数据移动以执行Wider Transformation。因为这些操作会对数据进行洗牌(shuffle),所以它们也被称为(shuffle transformations)。


groupByKey()、aggregateByKey()、aggregate()、join()、repartition()等函数是Wider Transformation的一些示例。

注意:与Narrow转换相比,由于shuffling,Wider Transformation是更昂贵的操作。

参考文献:

Spark RDD Transformations with examples - Spark by {Examples}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值