apache-spark – 从dstream驱动程序中收集RDD的结果

我在驱动程序中有这个功能,它将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,因此尚未处理任何元素.

点赞