0

下面两个是一样的吗?

val dstream = stream.window(Seconds(60), Seconds(1))
val x = dstream.map(x => ...)

val dstream = stream.window(Seconds(60), Seconds(1))
val x = dstream.transform(rdd => rdd.map(x => ...))
4

1 回答 1

1

map(func) 通过函数 func 传递源 DStream 的每个元素,返回一个新的 DStream。

transform(func) 通过对源 DStream 的每个 RDD 应用 RDD-to-RDD 函数返回一个新的 DStream。这可用于对 DStream 执行任意 RDD 操作。

简而言之,Spark 流中的转换函数可以用于 Apache Spark 对流的底层 RDD 的任何转换。map 用于元素到元素的转换。

本质上,map 作用于 DStream 的元素,transform 允许您使用 DStream 的 RDD(map 作用于每一行,transform 作用于每个 rdd)。

http://spark.apache.org/docs/latest/streaming-programming-guide.html#transformations-on-dstreams

地图示例

val clicks: DStream[...] = ...
val mappedClicks: ... = clicks.map(...)

转换示例

transform(transformFunc: RDD[T] => RDD[U]): DStream[U]
transform(transformFunc: (RDD[T], Time) => RDD[U]): DStream[U]
于 2017-10-05T15:00:32.840 回答