一、背景
首先按照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端口已被監聽,進而成功連接。