DataFrame 上的 count() 是否会将数据具体化给驱动程序/增加 OOM 的风险?
Does a count() over a DataFrame materialize the data to the driver / increase a risk of OOM?
我想 运行 df.count()
在我的 DataFrame 上,但我知道我的数据集总大小相当大。这是否 运行 将数据具体化回驱动程序的风险/增加我的驱动程序风险 ?
这不会将您的整个数据集具体化给驱动程序,也不一定会增加您出现 OOM 的风险。 (它强制对传入的 DataFrame 进行评估,因此如果该评估意味着您将 OOM,那么它将在您 .count()
时被识别,但 .count()
本身并没有导致这个,它只是你意识到了)。
然而,这会做的是从您调用时停止执行您的作业。 .count()
。这是因为驱动程序必须知道这个值才能继续您的任何其他工作,因此这不是 Spark / 分布式计算的特别有效使用。仅在必要时使用 .count()
,即在选择分区计数或其他此类动态调整大小操作时。
我想 运行 df.count()
在我的 DataFrame 上,但我知道我的数据集总大小相当大。这是否 运行 将数据具体化回驱动程序的风险/增加我的驱动程序风险
这不会将您的整个数据集具体化给驱动程序,也不一定会增加您出现 OOM 的风险。 (它强制对传入的 DataFrame 进行评估,因此如果该评估意味着您将 OOM,那么它将在您 .count()
时被识别,但 .count()
本身并没有导致这个,它只是你意识到了)。
然而,这会做的是从您调用时停止执行您的作业。 .count()
。这是因为驱动程序必须知道这个值才能继续您的任何其他工作,因此这不是 Spark / 分布式计算的特别有效使用。仅在必要时使用 .count()
,即在选择分区计数或其他此类动态调整大小操作时。