从scala中的rdd.map内进行迭代查找

时间:2015-12-10 18:54:21

标签: scala apache-spark rdd

def retrieveindex (stringlist: List[String], lookuplist: List[String]) = 
  stringlist.foreach(y => lookuplist.indexOf(y))

是我的功能。

我试图在这样的rdd中使用它:

val libsvm = libsvmlabel.map(x => 
  Array(x._2._2,retrieveindex(x._2._1.toList,featureSet.toList)))

但是,我得到一个空的输出。没有错误,但来自retrieveindex的输出为空。当我使用println查看我是否正确检索时,我确实看到了索引打印。有没有办法做到这一点?我应该先分发'对所有工人的作用?我是新手。

1 个答案:

答案 0 :(得分:3)

retrieveindex的返回类型为Unit(因为foreach只在每个元素上应用函数(String) ⇒ Unit)。因此它不会映射到任何东西。

您可能希望它返回索引列表,例如:

def retrieveindex(stringlist: List[String], lookuplist: List[String]): List[Int] = 
  stringlist.map(y => lookuplist.indexOf(y))