您好我的代码只是从文档中获取字数。我还需要使用map来生成输出之前查找数据值。这是代码。
requests
.filter(_.description.exists(_.length > 0))
.flatMap { case request =>
broadcastDataMap.value.get(request.requestId).map {
data =>
val text = Seq(
data.name,
data.taxonym,
data.pluralTaxonym,
request.description.get
).mkString(" ")
getWordCountsInDocument(text).map { case (word, count) =>
(word, Map(request.requestId -> count))
}
}
}
.reduceByKey(mergeMap)
错误消息是
reduceByKey is not a member of org.apache.spark.rdd.RDD[scala.collection.immutable.Map[String,scala.collection.immutable.Map[Int,Int]]]
我该如何解决这个问题?我需要调用getWordCountsInDocument。谢谢!
答案 0 :(得分:3)
reduceByKey是PairRDDFunctions的成员,基本上它以RDD[(K, V)]
的形式隐式添加到RDD中。您可能需要将结构展平为RDD[String, Map[Int,Int]]
。
如果您可以提供输入的类型(requests
,broadcastDataMap
和mergeMap
),我们可以为该转换提供一些帮助。
从提供的类型中,假设getWordCountsInDocument的返回类型是某个Collection [(word,count:Int)]
改变:
broadcastDataMap.value.get(request.requestId).map {
到
broadcastDataMap.value.get(request.requestId).flatMap {
应解决问题。