运行SparkStreaming的NetworkWordCount实例出错:Error connecting to localhost:9999 java.net.ConnectException: Connection refused 解决办法

一、背景

首先按照Spark的官方文档来运行此实例,具体方法参见这里,当运行命令 $ nc -lk 9999开启端口后,再运行命令$ ./bin/run-example streaming.NetworkWordCount localhost 9999,却出现错误“Error connecting to localhost:9999 java.net.ConnectException: Connection refused ”,也就是9999端口无法连接。

二、解决办法

(1)首先代码要没有问题,比如在定义SparkConf时要使用val sparkConf = new SparkConf().setAppName("SparkStreamingExample").setMaster("local[2]") ,而不是val sparkConf = new SparkConf().setAppName("SparkStreamingExample").setMaster("local")
(2)然后要保证先使用命令 $ nc -lk 9999开启端口,然后再运行命令./bin/run-example streaming.NetworkWordCount localhost 9999,命令的先后顺序不能错;
(3)如果代码没有问题,命令的先后顺序也没有错,但还是出现上述错误,则将开启端口的命令改为$ nc -l -p 9999后运行程序。
我使用方法(3)成功解决了此问题。

三、总结

由于9999端口无法连接,可以先使用命令$ netstat -ntpl | grep 9999来查看9999端口是否已经被监听了,我使用命令$ nc -lk 9999后端口9999未被监听,所以出现无法连接的错误,使用命令$ nc -l -p 9999后,9999端口已被监听,进而成功连接。

原文地址:https://www.cnblogs.com/sench/p/7908528.html