2016-10-02 21 views
0

我正在運行一個簡單的SparkStreaming應用程序,該應用程序包括通過套接字服務器將消息發送到SparkStreaming上下文並打印它們。 這是我的代碼,我在的IntelliJ IDE中運行:Spark Streaming:輸入已收到但未處理

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

它只是停留永久這種方式。 如果我去星火UI,我發現SparkStreaming上下文正在接收的投入,但他們沒有被處理:

enter image description here

enter image description here

有人能幫助我嗎?非常感謝。

+0

你是如何啓動您的應用程序?客戶端模式還是集羣模式? –

回答

0

您需要執行以下操作。

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

一旦你做到這一點,你需要在端口5554來發布消息,這首先需要使用運行Netcat的(在大多數類Unix系統中發現一個小工具)作爲數據服務器和開始推送流。

例如,您需要像下面這樣做。

1號航站樓:

# Running Netcat 

$ nc -lk 5554 

hello world 

2號航站樓:運行你的流節目

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



    ... 

您可以檢查類似的例子here

+0

謝謝,但我已經開始了火花流傳輸環境,只是選擇不寫它,因爲我認爲這很明顯。這不是我的第一個火花項目。 –

+0

你正在運行哪種模式? –

+0

我正在集羣模式下運行。在本地模式下,一切運行良好,但不是在集羣模式下 –

相關問題