2016-06-09 61 views
3

返回個人RDDS如何從DSTREAM窗口恢復單個RDD:從DSTREAM窗口

my_dstream_window : somedstream.window(3mins,1min) 

假設上述my_dstream_window包含{RDD1集,RDD2,rdd3}我想要做一些操作

rdd1.Operation(rdd2).Operation(rdd3)

意圖: - my_dstream_window有重複項。我可以使用reduceByKey爲這個流刪除它們,但my_dstream_window的下一個片段將與舊的key-value對重疊。

所以基本上我的任務是保存不同的rdd鍵值對,只需從前一個dstream中刪除任何重疊的鍵值。

請提出建議。

+0

my_dstream_window有重複項。我可以使用reduceByKey爲這個流刪除它們,但my_dstream_window的下一個片段將與舊的key-value對重疊。所以基本上我的任務是僅通過從下一個dstream中刪除任何重疊的鍵值來保存唯一的rdd鍵值對。 – vkb

+0

請編輯與評論中的附加信息的問題。 –

+0

我已經回答了你的其他問題。這一個不會幫助達到預期的結果。 – maasg

回答

2

有上DSTREAM,它可以讓你得到RDDS屬於時間片非記錄方法:

def slice(fromTime: Time, toTime: Time): Seq[RDD[T]] 

這是由window函數內部使用,但它也暴露了公共API。要使用它,我們需要跟蹤時間,因爲它需要一個時間間隔作爲參數。它返回屬於該間隔的一系列RDD。 (以前「明確」或通過調用窗口函數)