我写了一个spark作业来侦听特定端口上的socket,为此我在Spark代码中使用了JavaStreamingContext。请参考我的火花代码如下 -
SparkConf sparkConf = new SparkConf().setAppName("ApmpathAggregationSocket").setMaster("local[2]");
JavaStreamingContext ssc = new JavaStreamingContext(sparkConf,new Duration(2000));
JavaReceiverInputDStream<String> lines = ssc.socketTextStream("servername",9999);
lines.print();
ssc.start();
ssc.awaitTermination();
后来我写了一个java代码来连接到这个端口9999并发送一些数据,我的要求是我需要从我的java代码中使用socket发送一些数据并且spark应该得到他们的数据,但是我没有得到Spark方面的数据。我可以看到Spark作业连接到套接字并且它正在侦听端口9999,但是当我在java中使用套接字编程发送内容时,我无法做到这一点。请参考下面的Socket Java代码 -
try {
ServerSocket socket = new ServerSocket(9999);
Socket clientSock = socket.accept();
Socket clientSock2 = new Socket("servername",9999);
//DataInputStream in = new DataInputStream(clientSock.getInputStream());
DataOutputStream dout=new DataOutputStream(clientSock2.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str="";
while(!str.equals("stop")){
str=br.readLine();
dout.writeUTF(str);
dout.flush();
}
dout.close();
socket.close();
clientSock.close();
clientSock2.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
有人可以帮助我实现这个目标,因为我是Spark的新手。感谢。