scala rdd.map 中的迭代查找

iterative lookup from within rdd.map in scala

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 查看是否正确检索时,我确实看到了打印的索引。有什么办法吗?我应该先 'distribute' 向所有工人提供功能吗?我是新手

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

您可能希望它成为 return 索引列表,例如:

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