像字典一样处理(String,Int)元组数组

时间:2016-10-11 21:13:43

标签: scala apache-spark

我有一个类似于以下内容的元组列表:

(("String1", Value1), ("String2", Value2), ...)

其中字符串为String且值为Double。 scala中是否有方法可以实现以下目的:

1)在列表中搜索特定的字符串值。

2)如果我们有一个匹配,则返回与该字符串相关联的值。

3)如果我们有一个未命中,则返回-1。

这个元组序列是在格式为RDD [K,V]的RDD上使用collect创建的,其中键是字符串,val是双精度数。最初我打算在RDD上使用查找,但看起来这项工作需要在驱动程序上完成(因此collect)。

2 个答案:

答案 0 :(得分:1)

也许您可以先尝试将其转换为地图:

scala> val collection = Map(("hello", 1), ("world", 2))
collection: scala.collection.immutable.Map[String,Int] = Map(hello -> 1, world -> 2)

scala> collection getOrElse ("hello", -1)
res3: Int = 1

scala> collection getOrElse ("scala", -1)
res4: Int = -1

答案 1 :(得分:1)

val m = list.toMap.withDefaultValue(-1d)

// 1 and 2
m("String1") // Value1

// 3
m("Some other") // -1d