转载:https://www.cnblogs.com/wbh1000/p/9846401.html
两者的区别主要在于action后得到的值
例子:
import org.apache.spark.{SparkConf, SparkContext}
object MapAndFlatMap {
def main(args: Array[String]): Unit = {
val sc = new SparkContext(new SparkConf().setAppName("map_flatMap_demo").setMaster("local")) val arrayRDD =sc.parallelize(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 }) } }
上述代码中,打印结果1、2、3分别如下面三图
打印结果1
打印结果2
打印结果3