Spark Streaming:接收输入但未处理

时间:2016-10-02 22:15:31

标签: intellij-idea apache-spark spark-streaming

我正在运行一个简单的SparkStreaming应用程序,它包括通过套接字服务器向SparkStreaming Context发送消息并打印它们。 这是我的代码,我在IntelliJ IDE中运行:

    SparkConf sparkConfiguration= new SparkConf().setAppName("DataAnalysis").setMaster("spark://IP:7077");
    JavaStreamingContext sparkStrContext=new JavaStreamingContext(sparkConfiguration, Durations.seconds(1));
    JavaReceiverInputDStream<String> receiveData=sparkStrContext.socketTextStream("localhost",5554); 

我在独立群集模式下运行此应用程序,其中包含一个工作程序(一个Ubuntu VM)和一个主服务器(我的Windows主机)。 这就是问题:当我运行应用程序时,我看到它已成功连接到主服务器,但它不会打印任何行:

enter image description here

它永远保持这种方式。 如果我转到Spark UI,我发现SparkStreaming Context正在接收输入,但它们没有被处理:

enter image description here

enter image description here

是的,有人能帮帮我吗?非常感谢你。

1 个答案:

答案 0 :(得分:0)

您需要在下面执行。

sparkStrContext.start();              // Start the computation
sparkStrContext.awaitTermination();   // Wait for the computation to terminate

执行此操作后,您需要在端口5554发布消息,为此您首先需要通过使用并开始推送流来运行Netcat(在大多数类Unix系统中找到的小实用程序)作为数据服务器

例如,您需要执行以下操作。

TERMINAL 1:

# Running Netcat

$ nc -lk 5554

hello world

TERMINAL 2:运行您的流媒体节目

-------------------------------------------
Time: 1357008430000 ms
-------------------------------------------
hello world
...



    ...

您可以查看类似示例here