Apache spark 如何使用spark streaming来流式处理websocket?
我需要使用ApacheSpark将websocket中的流写入拼花地板文件。当前的ApacheSpark流媒体功能似乎不支持现成的WebSocket apache spark中有一个从TCP套接字读取流的命令,因此我尝试将websocket转换为常规套接字,但尚未使用测试脚本让spark读取套接字: 我将服务器设置为:Apache spark 如何使用spark streaming来流式处理websocket?,apache-spark,websocket,spark-streaming,databricks,Apache Spark,Websocket,Spark Streaming,Databricks,我需要使用ApacheSpark将websocket中的流写入拼花地板文件。当前的ApacheSpark流媒体功能似乎不支持现成的WebSocket apache spark中有一个从TCP套接字读取流的命令,因此我尝试将websocket转换为常规套接字,但尚未使用测试脚本让spark读取套接字: 我将服务器设置为: 导入套接字,socketserver,时间 类MyHandler(socketserver.BaseRequestHandler): def句柄(自身): 计数器=1 而1: #
导入套接字,socketserver,时间
类MyHandler(socketserver.BaseRequestHandler):
def句柄(自身):
计数器=1
而1:
#dataReceived=self.request.recv(1024)
#如果未收到数据:中断
str_send='msg'+str(计数器)
self.request.send(str_send.encode(“utf-8”))
计数器+=1
时间。睡眠(2)
myServer=socketserver.TCPServer(('localhost',5146),MyHandler)
myServer.serve_forever()
在普通客户机上工作正常:
导入套接字,socketserver,时间
def客户端(ip,端口):
sock=socket.socket(socket.AF\u INET,socket.sock\u流)
sock.connect((ip,端口))
尽管如此:
响应=str(sock.recv(1024))
打印(“接收:{}”。格式(响应))
ip='localhost'
端口=5146
客户端(ip、端口)
但当我使用spark的示例读取TCP流时,仍然没有得到任何数据:
lines=spark\
.readStream\
.格式(“套接字”)\
.选项(“主机”、“本地主机”)\
.选项(“端口”,5146)\
.load()
query=lines.writeStream\
.格式(“控制台”)\
.outputMode('append')\
.start()\
.终止
我还尝试写入一个文件,但该文件是空白的
已建立连接,但没有数据通过:
$ netstat -na | grep "5146"
tcp4 0 0 127.0.0.1.5146 127.0.0.1.59823 ESTABLISHED
tcp4 0 0 127.0.0.1.59823 127.0.0.1.5146 ESTABLISHED
tcp4 0 0 127.0.0.1.5146 *.* LISTEN
你有没有想过?