我正在尝试创建一个实时环境,以一定时间间隔将数据从文件传递到套接字流。它可以正常工作,但是要使用socketTextStream读取数据,只有在按下Enter键时才会考虑数据。 因此,我希望按下键或传递可以解释为按下Enter键的内容。
我尝试用字符串添加“ \ n”:
dOut.writeUTF(values.replace(",","") )
dOut.writeChars("\n")
但是,它只是创建一个新行,但未添加回车键。
此外,我尝试通过以下方式传递它:
dOut.writeUTF(values.replace(",","") )
dOut.writeChars(Key.Enter+"")
这只是在每行末尾添加一个字符串Enter。但这不是按Enter键
我的代码:
val socket = new Socket(InetAddress.getByName("localhost"), 9090)
val dOut = new DataOutputStream(socket.getOutputStream())
// Just to pass the enter key I tried using scala.swing
import scala.swing.event.Key
// values is just a string read from json to be sent over socket
stream.
values = values.replace("\"","")
try {
println("trying to connect to socket sending values")
println(values)
dOut.writeUTF(values.replace(",","") )
dOut.writeChars(Key.Enter)
dOut.flush()
Thread.sleep(1500)
} catch {
case e: IOException =>
System.err.println(e)
}
以下是从同一套接字读取的流媒体的代码:
val ssc = new StreamingContext(config,Seconds(3))
val data = ssc.socketTextStream("localhost",9090)
val words = data.flatMap(_.split(" ")).map(w =>
(w,1)).reduceByKey(_+_)
words.print()
ssc.start()
ssc.awaitTermination()
使用“ \ n”发送,但没有按Enter键,因此我的套接字流光无法读取此代码:
*133.3000 51609 133.2400 133.3150 133.2200
+135.1355 264853 135.0900 135.1500 134.9700
+131.7500 243357 131.8000 132.0400 131.7200
+132.8800 121197 132.8000 132.8800 132.7700
使用Key.Enter +“ \ n”和Key.Enter。(“ \ n”),其输出显示为:
136.0800 109158 136.0300 136.0900 135.9900 Enter
+137.1621 141391 137.2100 137.2200 137.1350 Enter
请帮助我将注释ket添加到Enter键,以发送到套接字流工作。 任何帮助将不胜感激。谢谢。