python - "getNumPartitions"是一个昂贵的操作吗?

标签 python python-2.7 apache-spark pyspark apache-spark-sql

我正在使用 pyspark,我调用 getNumPartitions() 来查看是否需要重新分区,这大大降低了我的代码速度.代码太大,无法在此处发布。我的代码是这样工作的:

我的印象是这不是一项昂贵的操作……我是不是理解错了,它真的很昂贵吗?或者是其他什么东西减慢了我的代码速度?

最佳答案

查看 getNumPartitions() 的源代码...

def getNumPartitions(self): 
    return self._jrdd.partitions().size() 

应该不会那么贵吧。我怀疑还有其他事情导致你的速度变慢。

这是我所知道的:

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

关于python - "getNumPartitions"是一个昂贵的操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969270/

相关文章:

python - 为什么这个列表理解比等效的生成器表达式更快?

python - Windows上下文 : OleInitialize() failed: "COM error 0x80010106 RPC_E_CHANGED_MODE (Unknown error 0x0ffffffff80010106)"

python - Pandas:合并两个一维数据帧,输出两列并填充唯一元素的值

python - 字符串性能 - Windows 10 与 Ubuntu 下的 Python 2.7 与 Python 3.4

python - Spark 3.0.0 错误创建 SparkSession : pyspark. sql.utils.IllegalArgumentException: <exception str() failed>

json - 如何使用 Spark 和 Spray Json 读取 json 文件并转换为案例类

python - SQL 跨列绝对值

python - pandas .corr() 方法的进度条

python-2.7 - Python Selenium 警报身份验证问题

apache-spark - 如何使用 flatMapGroupsWithState 进行有状态聚合?