简单来说 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
网友评论