【问题标题】:Is Dstream map and Dstream transform map the same in Spark? [duplicate]Spark 中的 Dstream 映射和 Dstream 变换映射是否相同? [复制]
【发布时间】:2018-03-16 20:07:08
【问题描述】:

下面两个是一样的吗?

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

【问题讨论】:

  • 在我看来完全重复,可能会有所帮助:)
  • 只要判断以上两个是否相同即可。您链接的问题仍然没有使这件事弄清楚。据我了解,这两个将给出相同的输出。

标签: scala apache-spark stream dstream


【解决方案1】:

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

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

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

本质上,map 作用于 DStream 和变换的元素 允许您使用 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]

【讨论】:

  • 那没有回答我的问题。在这种情况下,输出是否相同,如果不是,为什么?
  • 您可以使用变换而不是地图获得相同的结果
猜你喜欢
  • 2016-08-02
  • 2016-04-26
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 2020-06-03
  • 2020-10-14
  • 1970-01-01
相关资源
最近更新 更多