Apache spark RDD何时排序?
我正在学习ApacheSpark,对此我有一个早期的问题。看起来,即使在对RDD进行排序时,它仍然可以不排序,这取决于您如何访问它。假设我执行了如下排序:Apache spark RDD何时排序?,apache-spark,Apache Spark,我正在学习ApacheSpark,对此我有一个早期的问题。看起来,即使在对RDD进行排序时,它仍然可以不排序,这取决于您如何访问它。假设我执行了如下排序: val someSortedRDD = someUnsortedRDD.map{[some condition]}.sortByKey() 这将始终按顺序出现: someSortedRDD.collect() 但是,这将以可能未排序的顺序打印,即使我之前对该RDD进行了排序: someSortedRDD.foreach(println)
val someSortedRDD = someUnsortedRDD.map{[some condition]}.sortByKey()
这将始终按顺序出现:
someSortedRDD.collect()
但是,这将以可能未排序的顺序打印,即使我之前对该RDD进行了排序:
someSortedRDD.foreach(println)
因此,我只是想知道是否有一些一般原则可以遵循,以知道何时以排序与未排序的顺序访问RDD。
foreach
是在工作机上运行的(在集群模式下,这实际上不会显示在驱动机上),而不是在驱动机上。很明显,排序顺序不是一个问题(我认为)-或者执行是按分区进行的,等等。但是collect
始终保留排序顺序。那么为什么不升级为一个答案呢?