下面两个是一样的吗?
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 => ...))
下面两个是一样的吗?
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 => ...))
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]