我是新手来激发流媒体,我无法理解地图是如何运作的。我想在从构造函数传递它之后从流中排队一些点,所以我写的是:
val data = inp.flatMap(_.split(","))
val points = data.map(_.toDouble)
val queue: Queue[Point] = new Queue[Point]
points.foreachRDD(rdd => {
rdd.map(x => queue.enqueue(new Point(x,1)))
})
当我打印队列的大小始终为零。
答案 0 :(得分:0)
Spark中的所有转换都是惰性的,它们不会立即计算结果。相反,他们只记得应用于某些基础数据集的转换。仅当操作需要将结果返回到驱动程序时才会计算转换。
由于您在此处应用 地图 功能,因此会对其进行延迟评估并且不会进行计算。相反,会构建DAG。仅在调用操作时才会对此进行评估。您可能想尝试收集或任何其他操作来实现此目的。
你可以在这里阅读更多相关内容。它有点古老但信息丰富。 https://training.databricks.com/visualapi.pdf