2016-09-20 194 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) 

但是,这基本意味着你可以从阅读星火的入门教程中受益,因为它通常涉及的第一件事的问题。