如何在接收器完成后仅在流式RDD上限制foreach一次



我创建了一个自定义接收器来从Elastic Search中提取与特定查询相关的记录,并实现了流式RDD转换来处理接收器生成的数据。

最后的RDD是一个名值对的排序列表,我想通过编程读取前20个结果,而不是写入外部文件。

我在RDD上使用"foreach",并将前20个值放入一个列表中。我看到每当接收器有新的微批量时,forEach都会被处理。

然而,我希望foreach计算只在接收器完成从Elastic Search获取所有记录时和流上下文终止之前进行一次,这样我就可以将结果填充到列表中,并在驱动程序中进行处理。

首先应该创建一个静态空Rdd,然后与流Rdd联合。一旦你的流媒体上下文停止,应用foreach来计算你的静态Rdd。

最新更新