我试图在以下语句中使用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