2017-01-01 170 views
-7

我是火花和斯卡拉的業餘愛好者,誰能告訴我這是什麼語法? :火花和斯卡拉的語法

val encoded_props = props.map(_.split(" ")).map(t => Map((t(1),t(0).toLong))).reduce((a1,a2)=>a1++a2) 

感謝

回答

2

見,

星火Scala的一些泛函原理像地圖使用,減少等..

那麼,讓我展示它是如何工作的。

假設你有這樣的文件:

123 A 
456 B 

該文件將被裝載在可變props

當你映射在map(_.split(" "))在地圖上每一行,你會在分割數據空間caractere。它會在你的RDD創建(字符串,字符串)的這樣一個元組:

(("123", "A"), ("456", "B")) 

的其他地圖map(t => Map((t(1),t(0).toLong)))是說在每個元組的每個元素,你會選擇0元和1元創建一個Map對象。您正在將索引0字符串轉換爲Long。下面是輸出

Map("A" -> 123) 
Map("B" -> 456) 

地圖,是Scala的集合,可以追加項目與++所以減少將每個相同的鍵,它會追加數據到地圖的集合。像所有的A都會這樣追加對方:

Map("A" -> 123, "A" -> 669) 

我建議你在文檔中檢查這個過程的每個元素。