map和flatmap的區(qū)別 map和flatmap的區(qū)別?
map和flatmap的區(qū)別?1. map的功能很容易理解,即通過函數(shù)操作將RDD中的元素逐個(gè)映射到另一個(gè)RDD中。flatmap的操作是將函數(shù)應(yīng)用于RDD中的每個(gè)元素,并用返回的迭代器的所有內(nèi)容形成
map和flatmap的區(qū)別?
1. map的功能很容易理解,即通過函數(shù)操作將RDD中的元素逐個(gè)映射到另一個(gè)RDD中。flatmap的操作是將函數(shù)應(yīng)用于RDD中的每個(gè)元素,并用返回的迭代器的所有內(nèi)容形成一個(gè)新的RDD。通常用于分詞。2在spark中,map函數(shù)將對(duì)每個(gè)輸入執(zhí)行指定的操作,然后為每個(gè)輸入返回一個(gè)對(duì)象;而flatmap函數(shù)是兩個(gè)操作的集合-“展平前映射”:操作1:與map函數(shù)相同:對(duì)每個(gè)輸入執(zhí)行指定的操作,然后為每個(gè)輸入返回一個(gè)對(duì)象。操作2:最后合并一個(gè)對(duì)象的所有對(duì)象
在spark中,map函數(shù)將對(duì)每個(gè)輸入執(zhí)行指定的操作,然后為每個(gè)輸入返回一個(gè)對(duì)象;而flatmap函數(shù)是兩個(gè)操作的集合,即“展平前映射”。Map()是為RDD中的每個(gè)元素使用函數(shù),并用返回的值形成一個(gè)新的RDD。Flatmap()將函數(shù)應(yīng)用于RDD中的每個(gè)元素,并使用返回的迭代器的所有內(nèi)容形成一個(gè)新的RDD。通過這種方式,我們得到一個(gè)RDD,它由每個(gè)列表中的元素組成,而不是一個(gè)列表。有些人很尷尬??纯催@些例子。輸入結(jié)果輸入結(jié)果
map:轉(zhuǎn)換RDD的每個(gè)元素
flatmap:轉(zhuǎn)換RDD的每個(gè)元素,然后展平(即將所有對(duì)象合并為一個(gè)對(duì)象)
例如
//data有兩行數(shù)據(jù),第一行是a,B,C,第二行是1,2,3
斯卡拉>data.map文件(line1=> line1.split(“,”).collect()
res11:Array[Array[String
=數(shù)組(Array(a,b,c),Array(1,2,3))
scala>data.flatMap格式(line1=> line1.split(“,”).collect()
res13:Array[String]=Array(a,b,c,1,2,3)