如何用Spark解决一些经典MapReduce问题
2016-12-08 19:25
281 查看
如何用Spark解决一些经典MapReduce问题
![](http://www.36dsj.com/wp-content/uploads/2016/12/888.jpg)
文 | 谭杨
摘要
Spark是一个Apache项目,它被标榜为“快如闪电的集群计算”。它拥有一个繁荣的开源社区,并且是目前最活跃的Apache项目。Spark提供了一个更快、更通用的数据处理平台。和Hadoop相比,Spark可以让你的程序在内存中运行时速度提升100倍,或者在磁盘上运行时速度提升10倍。同时spark也让传统的map reduce job开发变得更加简单快捷。本文将简单介绍几个经典hadoop的mr按理用spark实现,来让大家熟悉spark的开发。最大值最小值
求最大值最小值一直是Hadoop的经典案例,我们用Spark来实现一下,借此感受一下spark中mr的思想和实现方式。话不多说直接上code:![](http://www.36dsj.com/wp-content/uploads/2016/12/882.png)
预期结果:
max: 1001min: 2
思路和hadoop中的mr类似,设定一个key,value为需要求最大与最小值的集合,然后再groupBykey聚合在一起处理。第二个方法就更简单,性能也更好。
平均值问题
求每个key对应的平均值是常见的案例,在spark中处理类似问题常常会用到combineByKey这个函数,详细介绍请google一下用法,下面看代码:![](http://www.36dsj.com/wp-content/uploads/2016/12/885.png)
我们让每个partiton先求出单个partition内各个key对应的所有整数的和 sum以及个数count,然后返回一个pair(sum, count)在shuffle后累加各个key对应的所有sum和count,再相除得到均值.
TopN问题
Top n问题同样也是hadoop种体现mr思想的经典案例,那么在spark中如何方便快捷的解决呢:![](http://www.36dsj.com/wp-content/uploads/2016/12/884.png)
思路很简单,把数据groupBykey以后按key形成分组然后取每个分组最大的2个。预期结果:
![](http://www.36dsj.com/wp-content/uploads/2016/12/886.png)
以上简单介绍了一下hadoop中常见的3个案例在spark中的实现。如果读者们已经接触过或者写过一些hadoop的mapreduce job,那么会不会觉得在spark中写起来方便快捷很多呢
相关文章推荐
- spark:学习过程中遇到的一些问题及解决方法(如何将本地文件发布到HDFS)--11
- Spark 与 Elasticsearch交互的一些配置和问题解决
- windows eclipse运行mapreduce遇到权限问题该如何解决
- 如何解决spark写hive慢的问题
- 如何解决一些控件无法运行在高版本的Chrome下运行的问题
- 第137课: Spark面试经典系列之数据倾斜解决之Map 端Reduce及问题思考
- 手下有个人总是用一些小的缺点来否认你的决定的优点,如何解决这个问题? (转载)
- Windows2008R2中如何取消增强的IE设置? 可加载一些无法加载的js,解决ie冲突问题打开Windows2008服务器管理器,如图
- 自学的程序员如何找到好工作?(你能够独立地写代码,解决问题并给世界带来一些新东西。这是最难能可贵的一点,也是公司在不断追求的一点)
- 如何避免spark dataframe的JOIN操作之后产生重复列(Reference '***' is ambiguous问题解决)
- 大数阶乘的一些经典问题解决
- Spark如何解决常见的Top N问题
- Spark技术内幕: 如何解决Shuffle Write一定要落盘的问题?
- 第139课: Spark面试经典系列之数据倾斜解决之对于两个RDD数据量都很大且倾斜的Key特别多如何解决?
- 如何尽可能高效地使用论坛+解决编程问题的一些方法
- 如何解决win7下一些exe图标丢失的问题
- 如何解决一些项目开发和维护中的问题――Hibernate实战篇
- spark遇到的一些问题及其解决办法
- 第143课: Spark面试经典系列之Reduce端OOM和shuffle file not found如何解决?
- Spark最佳实践中一键安装Spark集群的一些问题---Ubuntu如何root登录安装