我在驱动程序中有这个功能,它将rdds的结果收集到一个数组中并发回.但是,即使RDD(在dstream中)有数据,该函数也会返回一个空数组……我做错了什么?
def runTopFunction() : Array[(String, Int)] = {
val topSearches = some function....
val summary = new ArrayBuffer[(String,Int)]()
topSearches.foreachRDD(rdd => {
summary = summary.++(rdd.collect())
})
return summary.toArray
}
最佳答案 因此,虽然foreachRDD将执行您要执行的操作,但它也是非阻塞的,这意味着它不会等到所有流都被处理完毕.由于您在调用foreachRDD之后立即在缓冲区上调用toArray,因此尚未处理任何元素.