spark dataset api 中 flapmap 和 map 的区别:

简单来说 map()是通过function 把input collection 里的每一个元素都转换成output collection中的每一个output 元 素, 结果是是一对一的关系,flap()是apply function input collection 里的每一个元素都转换成output collection中的0个或者多个output 元素, 结果是是一对多的关系.

举个例子,  假设我们有个textfile:

‘’‘’

val textfile = spark.read.textFile("README.md")

val maxWordSize = textFile.map(line => line.split(" ").size).rduce((a,b) => if(a > b) a else b)

val wordCounts = textFile.flatMap(line => line.split(" ")).groupByKey(identity).count()

‘’‘’

可以看到map的输入是line, 输出是line的size, flatmap的输入是一个line, 但是输出是line被分割后的word的list

参考文章: https://www.edureka.co/community/40519/map-vs-flatmap-in-spark

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容