1、map和flatMap的区别
理解
val words: RDD[String] = lines.flatMap(_.split(","))
答:flatMap把数据源打散,规则function作用于每一个打散后的数据源。而map作用于整个数据源
案例:
`package zpark1127.pm
import org.apache.spark.rdd.RDD
import org.apache.spark.{
SparkConf, SparkContext}
//Map 和 flatmap 的区别 案例
object MapAndFlatmap {
def main(args: Array[String]): Unit = {
val sc = new SparkContext(new SparkConf().setAppName("map_flatMap_demo").setMaster("local"))
val arrayRDD: RDD[String] =sc.parallelize(Array("a_b","c_d","e_f"))
arrayRDD.foreach(println) //打印结果1
/**
* a_b
* c_d
* e_f
*/
arrayRDD.map(string=>{
string.split("_")
}).foreach(x=>{
println(x.mkString(",")) //打印结果2
/**
* a,b
* c,d
* e,f
*/
})
arrayRDD.flatMap(string=>{
string.split("_")
}).foreach(x=>{
println(x.mkString(","))//打印结果3
/**
* a
* b
* c
* d
* e
* f
*/
}