显示我的代码
In [10]: rdd = sc.mongoPairRDD("mongodb://localhost/stackoverflow.stack")
......
A lot of INFO
......
In [11]: newrdd = rdd.flatMap(f)
# No INFO
In [12]: newrdd.collect()
# A lot of INFO
当调用rdd
的函数时,比如说flatMap
,系统似乎不运行该函数的代码。但是当,比如说调用collect()
,系统运行并从内存或磁盘收集所有数据?在
我说得对吗?在
是的,你是!这实际上是Spark的预期行为。有转换(例如map、flatMap、reduce)和操作(count、collect、saveAsTextFile)可以应用于RDD。在
正如您所注意到的,当您调用转换时,不会发生计算,它只是将操作堆栈到RDD,以获得某种方法来生成它。但是一旦你调用一个动作然后砰的一声,RDD实际上就被评估了。这就是你打对方付费电话时发生的事。在
相关问题 更多 >
编程相关推荐