spark调优

  1. 复用rdd: 来自同一个数据源的,应该复用同一个rdd,从而减少内存的浪费。
  2. 尽量减少shuffer类的算子的使用: 因为spark的瓶颈大部分就是在shuffle,所以shuffle类的算子可以找到其他方式代替。比如,join的算子,使用使用广播变量的方式,将一个数据量少的文件分发,然后其他节点在map中再根据key去做关联。
  3. 对多次使用到的rdd做持久化处理: 就是减少重复劳动力的意思,每一个rdd执行算子操作的时候,都得从源头计算一遍,如果有相同的rdd,可以将其持久化(调用cache()或者persist())将其缓存在内存或者磁盘,下面步骤的rdd如果需要到这个rdd数据的时候,直接拿出来就可以用了。
  4. 使用预聚合shuffer操作: 这个有点类似于MapReduce的combiner,将map中的数据先进行一遍reduce后得到的数据量会比原先原先的少,然后再进行shuffer的时候,因为减少了数据规模从而降低的网络传输带宽的成本。 比如要使用groupByKey的时候,是否可以根据业务使用reduceByKey、aggregateByKey来替代,这类算子会根据用户自定义函数,现在对相同key的数据进行预处理。
  5. 序列化: 使用kryo序列化数据,不使用的话,好像默认是用gzip的方法压缩,但是kryo的效率较高,空间压缩规模更好。

转载于:https://my.oschina.net/u/3746234/blog/3048598

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值