Spark RDD使用原则

如今随着数据量的不断增加,Hadoop已经难以满足处理需求,逐渐发展起来的Spark基于内存的并行计算已经得到了广泛的应用。
Spark博大精深,编写起来比Hadoop方便很多,简单的几行代码就可以实现Hadoop复杂的代码,简单方便!著名的例子就是单词统计。
对于Spark性能的调优部分可以查看美团点评团队写的文章
http://tech.meituan.com/spark-tuning-basic.html,写的很棒。
Spark使用需要注意的几个原则:
1、同一个份数据只需要创建一个RDD,不要创建多个RDD,避免浪费开销;
2、对于多次使用的RDD将其持久化到缓存,持久化的时候尽量使用序列化的持久化级别(MEMORY_ONLY_SER,MEMORY_AND_DISK_SER)
3、避免使用多余的RDD,尽可能的复用同一个RDD;
4、避免使用Shuffle操作,避免使用reduceByKey、join、distinct、repartition等会进行shuffle的算子,尽量使用map类的非shuffle算子。
5、使用高性能的算子:
使用reduceByKey/aggregateByKey而不是用groupByKey;
根据需求可以对同一个分区里进行map操作,使用mapPartitions;同时可以使用foreachPartitions代替使用foreach;
使用filter之后一般需要进行coalesce对Rdd的分区进行修改;
当需要对Rdd进行重分区并排序的时候,尽量使用repartitionAndSortWithinPartitions,在充分区的时候并进行排序操作,提高处理速度。
6、合理使用广播变量,而不使用join进行操作
7、使用Kryo进行spark的序列化操作。

目前研究于Spark与Hadoop,群QQ号:521066396(spark,hadoop交流群),欢迎加入共同学习,一起进步~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值