3
我想通過滑動窗口將部分函數傳遞給在DStream批處理中捕獲的所有RDD的聯合。可以說,我對建設離散到1分二批流超過10秒的窗口操作:Spark:如何將PartialFunction傳遞給DStream?
val ssc = new StreamingContext(new SparkConf(), Seconds(1))
val stream = ssc.socketStream(...)
val window = stream.window(Seconds(10))
我window
會的K許多RDDS。我想在這些RDD的所有K的聯合上使用collect(f: PartialFunction[T, U])
。我可以使用foreachRDD
致電工會運營商++
,但我想返回RDD
而不是Unit
並避免副作用。
我正在尋找的是一個DStream
像
def reduce(f: (RDD[T], RDD[T]) ⇒ RDD[T]): RDD[T]
減速,我可以使用像這樣:
window.reduce(_ ++ _).transform(_.collect(myPartialFunc))
但這不是可用的星火流的API中。
有沒有人有任何好的想法,將流中捕獲的RDD合併到單個RDD中,這樣我就可以傳入部分函數了?或者爲了實施我自己的RDD減速器?也許這個功能在後續的Spark發佈中出現?
計算函數將允許你在一段時間內獲得RDD。 – Anant 2014-11-03 16:44:31
@Anant這個時期的開始和結束在哪裏? DStream方法'compute'只接受'validTime'參數。這是我的窗戶的開始還是結束?另外,我將如何處理與我的批次相同的間隔重複調用'compute'?我正在尋找一些不那麼有狀態的東西。 – nmurthy 2014-11-03 20:46:59
@nmurthy你不能在DStream上「收集」。你能否進一步解釋你想要做什麼?還有另一種方法。 – maasg 2014-11-03 23:16:56