我试着让flink从套接字连接读取一些流式文本输入。
在我的输入套接字代码中,我使用以下命令发布文本供flink接收:
outputStream.writeUTF(new String(message.getPayload()));
然而,在flink中,即使连接正常,我也无法阅读传入的文本。我在google-d上搜索,发现我可能需要使用 readUTF()
. 换句话说,这主要是由于编码。但是,这些都是在 InputStream
; Flink没有,因为我的输入是以 DataStream<String>
:
DataStream<String> text = env.socketTextStream("localhost", port, "\n");
有人能给我一些建议吗?谢谢您!
2条答案
按热度按时间e0uiprwp1#
writeUTF()
不会产生“用utf编码的单词”。它产生一种特定的格式,带有一个16位长度的字前缀readUTF()
我能理解。如果你不想用readUTF()
你不能使用writeUTF()
任何一个。使用writeBytes()
或者其他适合你阅读的代码。yh2wf1be2#
你的计划要完成什么?这些是flink的用例,如果您不想实现其中一个,我建议您在进行低级网络通信时使用javasockets
如果使用java,就相当简单了。您需要从套接字获取数据输入流,然后将传入的字节转换回字符串。例如,以下是对我有效的方法