2016-07-08 29 views
0

我每次收到數據流時基本都會打印"hello world"在接收到的流上打印火花流圖

我知道,每個流我可以調用函數foreachRDD但是這並不能幫助我,因爲:

  1. 這可能是沒有數據處理
  2. 我不想打印打招呼在每個rdd上,我想在整個流上打印hello(是否收到數據)。

Basicaly,每次程序試圖獲取數據(每隔30秒就會這樣做,因爲火花流上下文可以說)我想打印你好。

有沒有辦法做到這一點?有沒有像火花流媒體的onlisten事件?

回答

2

每個批處理間隔(在你的情況下,30秒)DStream將包含一個並且只有一個RDD,它在內部除以多個分區。您可以檢查它是否爲空,然後只打印hello world:

// Create DStream from source 
dstream.foreachRDD { rdd => if (!rdd.isEmpty) println("hello world") } 
+1

謝謝!這解決了它 –

+0

四個基本的時間參數是窗口,幻燈片,批處理和檢查點間隔。批次構成窗口,批次的步驟是滑動的,並且爲了堅持,必須選擇合適的檢查點間隔。 – Vezir