gpt4 book ai didi

scala - 在本地计算机上运行Spark Streaming时出现“连接被拒绝”错误

转载 作者:行者123 更新时间:2023-12-04 05:48:23 25 4
gpt4 key购买 nike

我知道“ Spark 流连接被拒绝”问题已经有很多线程。但是其中大多数都在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创建一个SocketInputDStream实例,该实例使用java.net.Socket https://github.com/apache/spark/blob/master/streaming/src/main/scala/org/apache/spark/streaming/dstream/SocketInputDStream.scala#L73
java.net.Socket是一个客户端套接字,这意味着它期望已经有一个服务器在您指定的地址和端口上运行。除非您有某些服务在本地计算机的端口7777上运行服务器,否则您所看到的错误是预期的。

要了解我的意思,请尝试以下操作(您可能不需要在环境中设置masterappName)。

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中最好的方法是什么。您可以编写另一个应用程序,该应用程序在该端口上作为服务器监听并发送一些数据。

关于scala - 在本地计算机上运行Spark Streaming时出现“连接被拒绝”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com