我覺得這個問題可能會使其他人受益。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