我正在运行一个简单的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主机)。 这就是问题:当我运行应用程序时,我看到它已成功连接到主服务器,但它不会打印任何行:
它永远保持这种方式。 如果我转到Spark UI,我发现SparkStreaming Context正在接收输入,但它们没有被处理:
是的,有人能帮帮我吗?非常感谢你。答案 0 :(得分:0)
您需要在下面执行。
sparkStrContext.start(); // Start the computation
sparkStrContext.awaitTermination(); // Wait for the computation to terminate
执行此操作后,您需要在端口5554发布消息,为此您首先需要通过使用并开始推送流来运行Netcat(在大多数类Unix系统中找到的小实用程序)作为数据服务器
例如,您需要执行以下操作。
# Running Netcat
$ nc -lk 5554
hello world
-------------------------------------------
Time: 1357008430000 ms
-------------------------------------------
hello world
...
...
您可以查看类似示例here