【问题标题】:Does a count() over a DataFrame materialize the data to the driver / increase a risk of OOM?DataFrame 上的 count() 是否会将数据具体化到驱动程序/增加 OOM 的风险?
【发布时间】:2021-12-17 03:37:57
【问题描述】:

我想在我的 DataFrame 上运行 df.count(),但我知道我的数据集总大小非常大。这是否存在将数据具体化回驱动程序的风险/增加驱动程序OOM 的风险?

【问题讨论】:

    标签: pyspark palantir-foundry foundry-code-repositories foundry-python-transform


    【解决方案1】:

    这不会将您的整个数据集具体化给驱动程序,也不一定会增加您发生 OOM 的风险。 (它会强制对传入的 DataFrame 进行评估,因此如果该评估意味着您将 OOM,那么这将在您 .count() 时被识别,但 .count() 本身并没有导致这种情况,它只会让您意识到这一点) .

    但是,这会从您调用的那一点停止您的作业的执行。 .count()。这是因为驱动程序必须知道这个值,然后它才能继续你的任何其余工作,所以它不是 Spark / 分布式计算的特别有效的使用。仅在必要时使用.count(),即在选择分区计数或其他此类动态调整大小操作时。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-16
      • 2013-06-28
      • 2012-08-19
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多