2016-09-20 192 views
-2

我想創建一個包含10000個元素的地圖,但所有元素都應該是相同的。斯卡拉地圖創建

所以我想要一個地圖是這樣的:[(1,1)(1,1)(1,1)(1,1)(1,1)(1,1)(1,1)...]。我知道如何指定一個範圍的值,然後創建一個映射,但我怎樣才能使用相同的重複值?

後續問題:

是什麼RDD[(Int, Int)]List[(Int, Int)]之間的區別?我在做:

val rdd: RDD[(Int, Int)] = (1 to 10).map(i => (1,1)).toList 

但我得到一個類型不匹配的錯誤。 我想要一個RDD[(Int, Int)]與我提到的內容,我該怎麼做?

+0

'RDD [A]'和'List [A]'之間有更多的區別,那麼就有相似之處。他們唯一的共同點是他們是Monad類實體集合。並且你得到這個錯誤的原因與這些錯誤相同 - >'val i:Int =「abcd」'或val a:List [Int] = Option(5)',那就是 - 你的類型變量和參考值與彼此不兼容。 –

回答

5

按照其定義,映射不能有多個具有相同鍵的元素。根據你所說的你想要的,我猜你正在尋找一個元組列表。這將是沿着(1 to 10000).map(i => (1,1)).toList

1

行的東西地圖可以包含任何特定鍵只有一個條目。假設你的意思是一個清單,那麼

List.fill(10000)((1,1)) 

會這樣做。

列表是本地保存的數據結構。 RDD分佈在多個節點上。完全不同,但他們有很多相同的方法(作爲Spark設計師的故意選擇)。您可以將列表轉換爲像t這一個RDD ...

val sc = ... // Spark Context 
val myList = .... 
val myRDD = sc.parallelize(myList) 

但是,這基本意味着你可以從閱讀星火的入門教程中受益,因爲它通常涉及的第一件事的問題。