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

简介: spark中 map和reduce理解及与hadoop的map、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中,就不是了。刚开始传入的是第一个元素和第二个元素,后面的就是返回值和下一个元素。如上面

第一次传参:为下面两个

("Michael",29)("Andy",30)

但是比较之后,由于30大于29,因为返回的是("Andy",30),("Andy",30)与第三个元素作为参数传入,("Andy",30)跟第三个元素比较("Justin",19)。

由于30大于19,因此依旧返回的是("Andy",30).依次类推。最后得出结果。


与hadoop中reduce函数比较

hadoop中reduce函数,一般用于统计数据。比如wordcount中统计单词的个数等。


目录
打赏
0
0
0
0
29
分享
相关文章
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
从“笨重大象”到“敏捷火花”:Hadoop与Spark的大数据技术进化之路
161 79
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
291 2
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
249 1
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
328 6
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
146 2
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
ES5常见的数组方法:forEach ,map ,filter ,some ,every ,reduce (除了forEach,其他都有回调,都有return)
Hadoop生态系统概览:从HDFS到Spark
【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由多个组件构成,旨在提供高可靠性、高可扩展性和成本效益的数据处理解决方案。本文将介绍Hadoop的核心组件,包括HDFS、MapReduce、YARN,并探讨它们如何与现代大数据处理工具如Spark集成。
582 0
大数据处理框架在零售业的应用:Apache Hadoop与Apache Spark
【8月更文挑战第20天】Apache Hadoop和Apache Spark为处理海量零售户数据提供了强大的支持
135 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等