|NO.Z.00038|——————————|BigDataEnd|——|Hadoop&Spark.V12|——|Spark.v12|sparkcore|RDD编程高阶&spark原理初探&RDD编程优化|

一、RDD编程优化
### --- RDD复用

~~~     避免创建重复的RDD。在开发过程中要注意:
~~~     对于同一份数据,只应该创建一个RDD,不要创建多个RDD来代表同一份数据。
### --- RDD缓存/持久化

~~~     当多次对同一个RDD执行算子操作时,每一次都会对这个RDD以之前的父RDD重新计算一次,
~~~     这种情况是必须要避免的,对同一个RDD的重复计算是对资源的极大浪费
~~~     对多次使用的RDD进行持久化,通过持久化将公共RDD的数据缓存到内存/磁盘中,
~~~     之后对于公共RDD的计算都会从内存/磁盘中直接获取RDD数据RDD的持久化是可以进行序列化的,
~~~     当内存无法将RDD的数据完整的进行存放的时候,
~~~     可以考虑使用序列化的方式减小数据体积,将数据完整存储在内存中
### --- 巧用 filter

~~~     尽可能早的执行filter操作,过滤无用数据
~~~     在filter过滤掉较多数据后,使用 coalesce 对数据进行重分区
### --- 使用高性能算子

~~~     避免使用groupByKey,根据场景选择使用高性能的聚合算子 reduceByKey、aggregateByKey
~~~     coalesce、repartition,在可能的情况下优先选择没有shuffle的操作
~~~     foreachPartition 优化输出操作
~~~     map、mapPartitions,选择合理的选择算子mapPartitions性能更好,但数据量大时容易导致OOM
~~~     用 repartitionAndSortWithinPartitions 替代 repartition + sort 操作
~~~     合理使用 cache、persist、checkpoint,选择合理的数据存储级别
~~~     filter的使用
~~~     减少对数据源的扫描(算法复杂了)
### --- 设置合理的并行度

~~~     Spark作业中的并行度指各个stage的task的数量
~~~     设置合理的并行度,让并行度与资源相匹配。
~~~     简单来说就是在资源允许的前提下,并行度要设置的尽可能大,达到可以充分利用集群资源。
~~~     合理的设置并行度,可以提升整个Spark作业的性能和运行速度
### --- 广播大变量

~~~     默认情况下,task中的算子中如果使用了外部变量,
~~~     每个task都会获取一份变量的复本,这会造多余的网络传输和内存消耗
~~~     使用广播变量,只会在每个Executor保存一个副本,Executor的所有task共用此广播变量,
~~~     这样就节约了网络及内存资源

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(21)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示