スライディング ウィンドウで DStream バッチでキャプチャされたすべての RDD の結合に部分関数を渡そうとしています。1 秒のバッチに離散化されたストリームで 10 秒以上のウィンドウ操作を構築するとします。
val ssc = new StreamingContext(new SparkConf(), Seconds(1))
val stream = ssc.socketStream(...)
val window = stream.window(Seconds(10))
私window
はK個のRDDを持っています。collect(f: PartialFunction[T, U])
これらの RDD のすべての K の和集合で使用したいと思います。++
を使用してユニオン演算子を呼び出すこともできますが、 not aを返し、副作用を回避foreachRDD
したいと考えています。RDD
Unit
私が探しているのは、次のようなリデューサーです
def reduce(f: (RDD[T], RDD[T]) ⇒ RDD[T]): RDD[T]
次のDStream
ように使用できます。
window.reduce(_ ++ _).transform(_.collect(myPartialFunc))
ただし、これは Spark Streaming API では利用できません。
部分関数を渡すことができるように、ストリームでキャプチャされた RDD を単一の RDD に結合するための良いアイデアはありますか? または、独自のRDDレデューサーを実装するためですか? おそらく、この機能は後続の Spark リリースで提供されるのでしょうか?