日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

spark中flatMap函数用法

發布時間:2024/1/17 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spark中flatMap函数用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說明

在spark中map函數和flatMap函數是兩個比較常用的函數。其中?
map:對集合中每個元素進行操作。?
flatMap:對集合中每個元素進行操作然后再扁平化。?
理解扁平化可以舉個簡單例子

val arr=sc.parallelize(Array(("A",1),("B",2),("C",3))) arr.flatmap(x=>(x._1+x._2)).foreach(println)

輸出結果為

A 1 B 2 C 3

如果用map

val arr=sc.parallelize(Array(("A",1),("B",2),("C",3))) arr.map(x=>(x._1+x._2)).foreach(println)

輸出結果

A1 B2 C3

所以flatMap扁平話意思大概就是先用了一次map之后對全部數據再一次map。

實際使用場景

這個場景是我曾經在寫代碼過程中遇到的難題,在字符串中如何統計相鄰字符對出現的次數。意思就是如果有A;B;C;D;B;C字符串,則(A,B),(C,D),(D,B)相鄰字符對出現一次,(B,C)出現兩次。?
如有數據

A;B;C;D;B;D;C B;D;A;E;D;C A;B

統計相鄰字符對出現次數代碼如下

data.map(_.split(";")).flatMap(x=>{for(i<-0 until x.length-1) yield (x(i)+","+x(i+1),1)}).reduceByKey(_+_).foreach(println)

輸出結果為

(A,E,1) (E,D,1) (D,A,1) (C,D,1) (B,C,1) (B,D,2) (D,C,2) (D,B,1) (A,B,2)

此例子就是充分運用了flatMap的扁平化功能。

總結

以上是生活随笔為你收集整理的spark中flatMap函数用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。