
对比结果2与结果3,很容易得出结论:
map函数后,RDD的值为 Array(Array("a","b"),Array("c","d"),Array("e","f"))
flatMap函数处理后,RDD的值为 Array("a","b","c","d","e","f")
即最终可以认为,flatMap会将其返回的数组全部拆散,然后合成到一个数组中
import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} //map(func) object flatMap { def main(args: Array[String]): Unit = { //本地模式 val conf: SparkConf = new SparkConf().setAppName("My scala word count").setMaster("local") //创建spark上下文对象 val sc = new SparkContext(conf) //1)map对所有数据进行操作 val arrayRDD =sc.makeRDD(Array("a_b","c_d","e_f")) arrayRDD.foreach(println) //打印结果1 arrayRDD.map(string=>{ string.split("_") }).foreach(x=>{ println(x.mkString(",")) //打印结果2 }) arrayRDD.flatMap(string=>{ string.split("_") }).foreach(x=>{ println(x.mkString(","))//打印结果3 }) } }
原文:https://www.cnblogs.com/hapyygril/p/13691819.html