2016-06-07 55 views
1

我們可以使用窗口創建轉化DStream具有更大的批次:星火流 - 滑動窗口和使用不同的

streamIDs.window(Duration(1000)).foreachRDD(rdd => println(rdd.distinct().count())) 

有沒有什麼辦法讓同在幻燈片持續時間也可作爲移動窗口參數?

回答

1

您是否試圖濾除窗口中的重複項?在這種情況下,你可以通過你的RDD映射到鍵值對,其中關鍵是原始元素的副本,該值並不重要模擬不同的窗口上面,說null

streamIDs 
    .mapToPair(lambda s : (s, null)) 
    .reduceByKeyAndWindow(lambda t1, t2 : t1, Duration(1000)) 
    .map(lambda (x, y) : x) 

這將從每個滑動窗口創建不同值的DStream。

如果你也想在每個窗口的每個值的數量,請執行下列操作:

streamIDs 
    .mapToPair(lambda s : (s, 1)) 
    .reduceByKeyAndWindow(lambda t1, t2 : t1 + t2, Duration(1000)) 

這將創造價值數對,例如一個DSTREAM ('A', 3), ('B', 5)...