0

Spark デカルト関数を使用して、値の N ペアのリストを生成します。

次に、これらの値をマッピングして、各ユーザー間の距離メトリックを生成します。

val cartesianUsers: org.apache.spark.rdd.RDD[(distance.classes.User, distance.classes.User)] = users.cartesian(users)
cartesianUsers.map(m => manDistance(m._1, m._2))

これは期待どおりに機能します。

Spark ストリーミング ライブラリを使用して、DStream を作成し、その上にマップします。

val customReceiverStream: ReceiverInputDStream[String] = ssc.receiverStream....
customReceiverStream.foreachRDD(m => {
  println("size is " + m)
})

customReceiverStream.foreachRDD 内でデカルト関数を使用できますが、doc http://spark.apache.org/docs/1.2.0/streaming-programming-guide.htmによると、これは意図した用途ではありません。

foreachRDD(func) 関数を適用する最も一般的な出力演算子、func, to each RDD generated from the stream. This function should push the data in each RDD to a external system, like saving the RDD to files, or writing it over the network to a database. Note that the function func is executed in the driver process running the streaming application, and will usually have RDD actions in it that will force the computation of the streaming RDDs.

DStream のデカルトを計算するには? おそらく私は DStreams の使用を誤解していますか?

4

1 に答える 1

1

私は変換方法を知りませんでした:

cartesianUsers.transform(car => car.cartesian(car))

17:00頃にトランスフォーム機能にも言及したナイストークhttps://www.youtube.com/watch?v=g171ndOHgJ0

于 2015-03-13T16:11:20.107 に答える