问题导读
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中,就不是了。刚开始传入的是第一个元素和第二个元素,后面的就是返回值和下一个元素。如上面
第一次传参:为下面两个