scala – 在本地计算机上运行Spark Streaming时出现’Connection
发布时间:2020-12-16 08:49:09 所属栏目:安全 来源:网络整理
导读:我知道有很多线程已经出现’spark streaming connection refused’问题.但其中大部分都在 Linux中,或者至少指向HDFS.我在Windows的本地笔记本电脑上运行它. 我正在运行一个非常简单的基本Spark流式独立应用程序,只是为了看看流的工作原理.这里没有做任何复杂
我知道有很多线程已经出现’spark streaming connection refused’问题.但其中大部分都在
Linux中,或者至少指向HDFS.我在Windows的本地笔记本电脑上运行它.
我正在运行一个非常简单的基本Spark流式独立应用程序,只是为了看看流的工作原理.这里没有做任何复杂的事情: – import org.apache.spark.streaming.Seconds import org.apache.spark.streaming.StreamingContext import org.apache.spark.SparkConf object MyStream { def main(args:Array[String]) { val sc = new StreamingContext(new SparkConf(),Seconds(10)) val mystreamRDD = sc.socketTextStream("localhost",7777) mystreamRDD.print() sc.start() sc.awaitTermination() } } 我收到以下错误: – 2015-07-25 18:13:07 INFO ReceiverSupervisorImpl:59 - Starting receiver 2015-07-25 18:13:07 INFO ReceiverSupervisorImpl:59 - Called receiver onStart 2015-07-25 18:13:07 INFO SocketReceiver:59 - Connecting to localhost:7777 2015-07-25 18:13:07 INFO ReceiverTracker:59 - Registered receiver for stream 0 from 192.168.19.1:11300 2015-07-25 18:13:08 WARN ReceiverSupervisorImpl:92 - Restarting receiver with delay 2000 ms: Error connecting to localhost:7777 java.net.ConnectException: Connection refused 我尝试使用不同的端口号,但它没有帮助.所以它继续在循环中重试并继续得到相同的错误.有没有人有想法? 解决方法
在socketTextStream的代码中,Spark创建了一个使用java.net.Socket
https://github.com/apache/spark/blob/master/streaming/src/main/scala/org/apache/spark/streaming/dstream/SocketInputDStream.scala#L73的SocketInputDStream实例.
java.net.Socket是一个客户端套接字,这意味着它希望服务器已经在您指定的地址和端口上运行.除非您在本地计算机的端口7777上运行服务器的某些服务,否则您看到的错误是预期的. 要查看我的意思,请尝试以下操作(您可能不需要在您的环境中设置master或appName). import org.apache.spark.streaming.Seconds import org.apache.spark.streaming.StreamingContext import org.apache.spark.SparkConf object MyStream { def main(args:Array[String]) { val sc = new StreamingContext(new SparkConf().setMaster("local").setAppName("socketstream"),Seconds(10)) val mystreamRDD = sc.socketTextStream("bbc.co.uk",80) mystreamRDD.print() sc.start() sc.awaitTermination() } } 这不会返回任何内容,因为该应用程序不会向bbc网站说HTTP,但它不会获得连接拒绝异常. 要在linux上运行本地服务器,我会使用netcat和一个简单的命令,如 cat data.txt | ncat -l -p 7777 我不确定你在Windows中最好的方法是什么.您可以编写另一个应用程序,该应用程序在该端口上侦听服务器并发送一些数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |