专栏名称: About云
about云-为热爱云开发技术人员提供最全面的信息传播和服务平台
目录
相关文章推荐
中核集团  ·  中核集团各系统召开2025年度工作会议② ·  21 小时前  
中核集团  ·  中核集团各系统召开2024年度工作会议① ·  昨天  
中核集团  ·  今日开工,DeepSeek对核工业人说…… ·  2 天前  
51好读  ›  专栏  ›  About云

spark中 map和reduce理解及与hadoop的map、reduce区别

About云  · 公众号  ·  · 2017-05-21 18:40

正文

问题导读
1.你认为map函数可以做哪些事情?
2.hadoop中map函数与Scala中函数功能是否一致?
3.Scala中reduce函数与hadoop中reduce函数功能是否一致?




spark用的Scala编写的。因此这里的map和reduce,也就是Scala的map和reduce。scala 有很多函数,而且很方便。这里想写下map和reduce函数,也是看到一篇帖子,感觉Scala非常有意思。 键值对rdd求value最大值 http://www.aboutyun.com/forum.php?mod=viewthread&tid=21747

map函数
map函数,你可以往里面放一些,在其它语言中的匿名函数。
源数据:(“人名”,年龄) val rdd = sc.parallelize(Array[(String,Int)](("Michael",29),("Andy",30),("Justin",19), ("Tom",10), ("Tonny",11), ("Bob",12)))
比如val result = rdd.map(x => x._2)
上面是什么意思?x是rdd中的元素,代表的是任何一个(String,Int),比如("Michael",29)或则("Andy",30)等。x._2则是第二个元素。

与hadoop中map函数比较
hadoop的map函数,与Scala中map函数没有太大的关系。hadoop的map函数,主要用来分割数据。至于如何分割可以指定分隔符。
更多可参考
Hadoop学习之mapreduce及示例代码

reduce函数
Scala中,reduce是传递两个元素,到函数中,然后返回值与下一个元素,一起作为参数传入。Scala有意思的地方在这里,难懂的地方也在这里。
如下面语句
val result = rdd.reduce((x,y) => (if(x._2 < y._2) y else x))
x和y在我们传统的函数中,它是固定的。但是Scala中,就不是了。刚开始传入的是第一个元素和第二个元素,后面的就是返回值和下一个元素。如上面
第一次传参:为下面两个







请到「今天看啥」查看全文