本以为本地测试打印,因为是.setMaster("local[1]"),并且getNumPartitions返回1,所以打印应该跟collect到driver后打印应该是一样的。但是事实并非如此,今天无意中发现,RDD中只有2行的打印会在正常的打印2行后,多出N行,断点打印发现,正常打印完2行后,明明顺序往下执行了,但是后面程序又跳回到了RDD中打印了。
原因:RDD被后面代码反复引用,但是没有perisit,又因为惰性求值,所以出现了反复的rdd中间打印。
本以为本地测试打印,因为是.setMaster("local[1]"),并且getNumPartitions返回1,所以打印应该跟collect到driver后打印应该是一样的。但是事实并非如此,今天无意中发现,RDD中只有2行的打印会在正常的打印2行后,多出N行,断点打印发现,正常打印完2行后,明明顺序往下执行了,但是后面程序又跳回到了RDD中打印了。
原因:RDD被后面代码反复引用,但是没有perisit,又因为惰性求值,所以出现了反复的rdd中间打印。