value collectAsMap 不是 org.apache.spark.rdd.RDD 的成员



我试图在以下语句中使用collectAsMap()

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.broadcast.Broadcast
import org.apache.spark.rdd.RDD
...
documents_input.
filter(_ != documents_header).
map(_.split(",")).
map(Document.parse(_)).
keyBy((_.id)).collectAsMap()

但是我收到以下错误:

value collectAsMap is not a member of org.apache.spark.rdd.RDD[(Int, `com.codependent.MyApp.Document)]`

知道为什么或如何将数组变成地图吗?

按照 Ram Ghadiyaram 的建议更新导入后修复:

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.broadcast.Broadcast
import org.apache.spark.rdd.RDD

这取决于您如何阅读documents_input。如果您使用sparkContext阅读它,那么您应该能够使用collectAsMap.但是,如果您已将documents_input阅读为Source或任何其他scala api那么collectAsMap不会这样做。在这种情况下,您可以使用toMap

最新更新