使用JAVA中的套接字编程无法在spark中获取数据

时间:2016-06-16 06:18:43

标签: java sockets apache-spark spark-streaming

我写了一个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的新手。感谢。

0 个答案:

没有答案