当前位置:   article > 正文

Spark优化_spark orderby优化

spark orderby优化

1、注意join的使用,如果有较小的表可考虑使用广播的方式实现mapjoin,类似MR/HIVE。广播变量是一个executor一份副本

2、注意数据倾斜的问题,这个问题在分布式shuffle操作时都有可能出现,常见几个场景:

join操作空值量很多时使用随机值
cout(distinct)操作,拆分成group by 再count
对数据采样抽取出倾斜的key,单独处理,最后做union,比如join时,倾斜的key量特别大,拆出来这部分key,与另一个表(只取这部分key)做mapjoin
一个步骤拆分成两个,先随机shuffle做次聚合减少数据量,最后再按key聚合
3、注意大量小分区的问题,比如hdfs本身存储大量小文件,或者在spark filter操作后等等都有可能出现,大量小分区会造成启动大量小任务,任务启动,线程切换开销极大。coalesce减少分区,如果是hdfs有大量小文件,可sc.newAPIHadoopFile设置使用CombineTextInputFormat

4、本身任务并行度设置的问题,spark.default.parallelism控制shuffle后task个数,官方推荐cpu core的数量*2-3个的并行度,同时num-executor 、executor-memory(根据实际情况我们一般设置3-4G),executor-cores(官方推荐2-4core,我设置的是2)

5、同一份数据会多次访问,可使用cache/persist将数据缓存在内存

6、如果要实现按不同粒度计算最后产出到不同目录,可以flatMap,最后再multi insert

7、实JVM

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号