spark dataset api 中 flapmap 和 ma

2019-12-29  本文已影响0人  爱跳的老鼠君

简单来说 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

上一篇 下一篇

猜你喜欢

热点阅读