Spark中为什么collect算子和foreach算子收集到的结果不一致
Spark中,collect算子会将RDD中的所有数据都收集到Driver端,然后返回一个数组,这个数组包含了所有的数据。而foreach算子是在每个分区上对数据进行操作,不会收集数据到Driver端,因此它无法返回一个包含所有数据的数组。
因为collect算子会将所有数据都收集到Driver端,所以如果数据量非常大,可能会导致Driver端的内存不足,而造成程序崩溃。而foreach算子则不会有这个问题,因为它是在每个分区上对数据进行操作,不会将所有数据都收集到Driver端。
此外,因为collect算子会将所有数据都收集到Driver端,所以它的执行速度也比foreach算子慢得多。因为foreach算子是在每个分区上进行操作,所以它的执行速度相对较快。
原文地址: https://www.cveoy.top/t/topic/fHQm 著作权归作者所有。请勿转载和采集!