在Spark中,Dstream map和Dstream变换是否相同?

时间:2017-10-05 09:02:04

标签: scala apache-spark stream dstream

以下两个是否相同?

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 => ...))

1 个答案:

答案 0 :(得分:1)

  

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

  

transform(func)通过应用RDD-to-RDD函数返回一个新的DStream   到源DStream的每个RDD。这可以用来做任意的   DStream上的RDD操作。

在Spark流中的简短转换功能中,我们可以将任何Apache Spark的转换用于流的底层RDD。 map用于元素到元素的转换。

  

本质上,map适用于DStream和transform的元素   允许您使用DStream的RDD(地图适用于每个行转换适用于每个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]