2016-11-24 44 views
0

我是Scala和Spark的新手,嘗試在Spark中創建一個類似於RDD的RDD,爲每條線分配一個Int作爲鍵並求和+1。如何在Spark中正確求和.map函數中的整數?

val mapUrls = urls.map{ 
var cont = 0 
x => 
cont += 1 
(cont,x) 
} 

問題是,在某種程度上,cont變量會在一定時間後回到1。

我在做什麼錯了?

回答

4

這是你想要的嗎?

urls.zipWithIndex.map(_.swap) 

您的代碼無法正常工作。請記住,Spark是分佈式框架,並且沒有共享內存。每項任務都會更新自己的cont

+0

謝謝你,這正是我想要的。 我發現日常需求有很多功能。 但只是爲了學習的目的,還有另一種解決方法? – gsjunior86

+0

不是通過修改閉包中的變量。你檢查'zipWithIndex'源代碼來理解如何實現。 – 2016-11-25 09:08:41

相關問題