在本地设置中运行两个并行的自定义接收器流,使用Spark流进行本地测试

时间:2017-08-04 15:52:55

标签: java spark-streaming

我目前正在学习如何使用Spark流媒体,并希望在加入并行流方面做一些实验。为此,我想设置两个并行的流,其中自定义Receiver类只生成随机数。到目前为止,我已经完成了所有设置。

但是,在一个Spark上下文中运行相同接收器类的两个自定义接收器实例似乎存在问题。当我只跑一个时,一切都很完美。一旦我连接第二个,似乎有一些无限循环错误。症状是我不再获得任何输出。为了更好地理解,我提出了一个简单的example showing the problem on github

如果克隆项目,一切都应该正常。只需取消注释Application.java中的第18行,您就会看到打印调用的输出消失了。这可能是Spark流式传输中的一个错误,也可能是我对库的工作方式的理解不够好,无法正常使用它。无论哪种方式,我希望这里有一些专家能够帮助我解决这个问题。

1 个答案:

答案 0 :(得分:0)

headdeask 幸运的是,Stackoverflow中有一个“相关”功能。通过查看“相关”线程找到我的解决方案。以下thread的已接受答案也解决了此处描述的问题。

所以解决方法是,在本地设置中,如果使用主URL“local [2]”,则只能获得2个工作线程。两者都由此设置中的自定义接收器使用。要获得第三个处理线程,需要使用主URL“local [3]”。