2017-08-04 16 views
0

我目前正在学习如何使用Spark流,并且希望通过加入并行流来进行一些实验。为了这个目的,我想用自定义的Receiver类设置两个并行流来生成随机数。到目前为止,我已经设置了一切在本地设置中使用Spark流在本地设置中运行两个并行自定义接收器流以进行本地测试

但是,在一个Spark上下文中运行同一接收器类的两个自定义接收器实例似乎存在问题。当我只运行一个完美的作品。只要我在第二个线路中连线,似乎会出现一些无限循环错误。症状是我没有得到任何输出了。为了更好的理解,我把一个简单的example showing the problem on github

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

回答

0

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

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

相关问题