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

时间:2015-04-06 20:02:34

标签: apache-spark spark-streaming

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

最终的RDD是名称值对的排序列表,我想以编程方式读取前20个结果,而不是写入外部文件。

我使用" foreach"在RDD上,将前20个值放入列表中。我发现只要接收器有一个新的微量分析器,就会处理forEach。

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

1 个答案:

答案 0 :(得分:0)

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