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))
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))