|NO.Z.00038|——————————|BigDataEnd|——|Hadoop&Spark.V12|------------------------------------------|Spa
2022/4/12 14:12:41
本文主要是介绍|NO.Z.00038|——————————|BigDataEnd|——|Hadoop&Spark.V12|------------------------------------------|Spa,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
[BigDataHadoop:Hadoop&Spark.V12] [BigDataHadoop.Spark内存级快速计算引擎][|章节二|Hadoop|spark|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共用此广播变量, ~~~ 这样就节约了网络及内存资源
===============================END===============================
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
来自为知笔记(Wiz)
这篇关于|NO.Z.00038|——————————|BigDataEnd|——|Hadoop&Spark.V12|------------------------------------------|Spa的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2023-05-13Windows下hadoop环境搭建之NameNode启动报错
- 2023-04-14hadoop伪分布式集群的安装(不是单机版)
- 2022-12-05Hadoop生态系统—数据仓库Hive的安装
- 2022-11-02Win10搭建Hadoop环境
- 2022-10-19Hadoop生态系统(数据仓库Hive的安装)
- 2022-10-03Hadoop、storm和Spark Streaming简单介绍
- 2022-10-03胖虎的Hadoop笔记——Hadoop的伪分布式部署
- 2022-09-11Ubuntu搭建全分布式Hadoop
- 2022-09-11Ubuntu搭建全分布式Hadoop
- 2022-09-09Ubuntu下安装伪分布式HADOOP遇到的一些问题