TCP连接在apache Spark,python的流式上下文中被拒绝

时间:2016-12-06 10:00:08

标签: sockets server pyspark spark-streaming

我希望从Android应用程序接收数据" IMU + GPS sensorstream"链接: https://play.google.com/store/apps/details?id=de.lorenz_fenster.sensorstreamgps&hl=en

我需要制作一个火花Dstream。但我收到以下错误。

from pyspark import SparkContext
from pyspark.streaming import StreamingContext


spc = SparkContext(appName="testReceive")
stc = StreamingContext(spc, 5)

#Is there an error in below line? 
lines = stc.socketTextStream("localhost" , 5555)

words = lines.flatMap(lambda line: line.split(" "))
pairs = words.map(lambda word: (word, 1))
wordCounts = pairs.reduceByKey(lambda x, y: x + y)

wordCounts.pprint()

stc.start()

stc.awaitTermination()

ERROR :

-------------------------------------------
Time: 2016-12-06 10:48:55
-------------------------------------------

16/12/06 10:48:55 WARN ReceiverSupervisorImpl: Restarting receiver with delay 2000 ms: Error connecting to localhost:5555
java.net.ConnectException: Connection refused (Connection refused)

我已转发端口' 5555'正在使用中。

如果我使用以下程序接收数据,则成功。 因此,以类似的方式我如何接收数据以使其成为火花流。

请帮助,坚持一个多星期了!!

import socket, traceback

host = ''
port = 5555
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind((host, port))

while True:
    try:
        message, address = s.recvfrom(8192)
        message = message.decode() 
        data = message.split(",")
        print(data)
    except (KeyboardInterrupt, SystemExit):
        raise
    except:
        traceback.print_exc()

2 个答案:

答案 0 :(得分:0)

lines = stc.socketTextStream(" localhost",5555)中没有错误。

U可以使用NetCat通过端口5555发送数据。 Downoad netcat并解压缩到一个文件夹。 从命令行导航到u解压缩网络的路径并运行以下代码: 在Windows上使用nc -l -p(在您的情况下为5555) 这将打开端口5555进行收听。 现在运行pySpark代码。 开始在命令行中输入代码,您可以在Python控制台中看到它们的数量。

答案 1 :(得分:0)

在端口5555上执行作业之前,请检查是否已启动NetCat服务

要检查是否已安装NetCat-
在cmd上运行命令:

nc

如果看到这个,

Cmd line:

然后NetCat已经安装。
在指定端口上启动服务。

如果没有,那么
1.从互联网下载NetCat(搜索Windows的Netcat-zip)
2.提取到C:\ drive
3.设置Windows环境变量:转到环境变量->系统变量->编辑路径,然后添加新路径,例如C:\ netcat->确定->确定
4.重新打开cmd并检查命令nc

在指定端口上(在cmd终端上)启动NetCat服务:

nc -l -p 5555

现在运行(使用spark-submit或通过诸如pycharm之类的任何编辑器)流作业。并继续从cmd终端输入结果。