我使用netcat
作为某些服务和火花流实例之间的桥梁。例如,服务向网络猫正在侦听的host:port
发送消息,然后想法是火花可以消耗它。然而,有没有办法使netcat passthrough,即作为一个非常简单的服务器,字面上听和发出。
ncat -lk localhost 5005
这表明我可以从我的第一个服务发送我的消息。但是我听不到同一个主机的火花:端口。有没有办法使这项工作?
一个建议是使用mkfifo backpipe
的管道,但现在的问题是,当运行我的spark实例正在监听5006但看起来这个连接似乎没有活着。我的服务发送到5005,然后netcat应该将它传输到5006,但是如何使5006上的服务始终存在,以便我的spark实例可以听取它?
mkfifo backpipe
nc -kl localhost 5005 0<backpipe | nc localhost 5006 1>backpipe
我还尝试了以下措施:
nc -klp 5005 -w 5 localhost 5006
但问题始终是火花无法消耗,并出现以下错误:
Deregistered receiver for stream 0: Restarting receiver with delay 2000ms: Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused
答案 0 :(得分:1)
您使用的netcat版本是什么?什么操作系统?如果使用传统的netcat(不是用于Spark示例的BSD-one),则必须提供端口参数:
nc -lk -p 5005