1.flatMap讲解
有时候,我们希望对每个输入元素生成多个输出元素。实现该功能的操作叫作 flatMap()。 就是把一个输入按照自己想要的方法变成多个输出,但是前后类型一定要匹配,以下我也会举出前后类型不匹配的例子,希望可以帮助大家理解flatMap()。
和 map() 类似,我们提供给 flatMap() 的函数被分别应用到了输入 RDD 的每个元素上。不 过返回的不是一个元素,而是一个返回值序列的迭代器。输出的 RDD 倒不是由迭代器组 成的。我们得到的是一个包含各个迭代器可访问的所有元素的 RDD。flatMap() 的一个简 单用途是把输入的字符串切分为单词。
1.1 Scala 中的 flatMap() 将行数据切分为单词
val lines = sc.parallelize(List("Hello world","Jak"))
val words = lines.flatMap(line => line.split(" "))
然后输出,看结果分析:
println(words.first()) // Hello 输出第一个元素
words.foreach(println) // 按列输出Hello word Jak(分行输出,只不过这里为了方便写一行了)