【发布时间】:2021-12-17 03:37:57
【问题描述】:
我想在我的 DataFrame 上运行 df.count(),但我知道我的数据集总大小非常大。这是否存在将数据具体化回驱动程序的风险/增加驱动程序OOM 的风险?
【问题讨论】:
标签: pyspark palantir-foundry foundry-code-repositories foundry-python-transform
我想在我的 DataFrame 上运行 df.count(),但我知道我的数据集总大小非常大。这是否存在将数据具体化回驱动程序的风险/增加驱动程序OOM 的风险?
【问题讨论】:
标签: pyspark palantir-foundry foundry-code-repositories foundry-python-transform
这不会将您的整个数据集具体化给驱动程序,也不一定会增加您发生 OOM 的风险。 (它会强制对传入的 DataFrame 进行评估,因此如果该评估意味着您将 OOM,那么这将在您 .count() 时被识别,但 .count() 本身并没有导致这种情况,它只会让您意识到这一点) .
但是,这会从您调用的那一点停止您的作业的执行。 .count()。这是因为驱动程序必须知道这个值,然后它才能继续你的任何其余工作,所以它不是 Spark / 分布式计算的特别有效的使用。仅在必要时使用.count(),即在选择分区计数或其他此类动态调整大小操作时。
【讨论】: