我觉得这个问题可能会使其他人受益。RDD collect()失败
如果我运行
val rdd1 = sc.parallelize(List("a", "b", "c", "d", "e"))
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toByte))
rdd1: org.apache.spark.rdd.RDD[String] = ParallelCollectionRDD[55] at parallelize at <console>:44
rdd1a: org.apache.spark.rdd.RDD[(String, Int, Int)] = MapPartitionsRDD[56] at map at <console>:46
它的工作原理。
只要我加收
val rdd1 = sc.parallelize(List("a", "b", "c", "d", "e"))
val rdd1a = rdd1.map(x => (x, 110, 110 - x.toByte)).collect()
失败。
逻辑排序真的让我失望。谁可以澄清?这是RDD吗?
这是因为,“地图”是一个懒惰的转变是不叫,直到动作被称为(“收集”)。你的第一个例子不会失败,因为地图尚未调用 – Fabich
了解,但根本原因是? – thebluephantom