“getNumPartitions”是一项昂贵的操作吗?

时间:2017-05-14 22:08:20

标签: python python-2.7 apache-spark pyspark spark-dataframe

我正在使用pyspark,我致电getNumPartitions()以查看是否需要repartition,这会大大减慢我的代码。代码太大,无法在此处发布。我的代码是这样的:

我的印象是,这不是一项昂贵的操作......我是误解,是否真的很贵?或者是其他什么东西减慢了我的代码?

1 个答案:

答案 0 :(得分:1)

查看getNumPartitions()的来源...

def getNumPartitions(self): 
    return self._jrdd.partitions().size() 
它应该不那么昂贵。我怀疑还有其他因素导致你的速度减慢。

这就是我所知道的:

  • 分区列表已缓存,因此只有第一次调用partitions()才能计算分区
  • Spark无论如何都必须计算每个RDD的分区,因此不应再为查询计数添加时间