dataframe - PySpark - DataFrame.count()是否会导致缓存()?
问题描述
如果我的 PySpark 集群上有一个非常大的 DataFrame,调用df.count()
它会导致整个 DataFramedf
被带入单个节点的内存中,还是所有单个节点都计算它们在结构中的一部分并将其返回到某个地方以聚合为最终结果?
我在文档中没有看到任何表明这种或另一种方式的内容。基本上我不想调用count()
太大而无法放入任何单个节点的内存的 DataFrame。
解决方案
count 是可以分布在执行者之间的东西。因此,对于每个执行者,计算他们的记录数。然后发送要一起计算的汇总记录数。Spark 优化将处理这些简单的细节。
如果你collect()
当时打电话,这就是导致驱动程序被完整的数据帧淹没的原因,并且很可能导致失败。
推荐阅读
- python-3.x - 如何检测我的图像是否被截断并以线程安全的方式加载它?
- c++ - 定义一个全局变量模板?
- android - 当语言选择阿拉伯语时,如何设置短信验证布局的 RTL?
- javascript - 在没有“https”或“www”的情况下如何隔离URL的域名?
- firebase - Firebase 保留用户计数不匹配
- python - 我正在尝试学习从 API 请求、加载和解析 Json 数据。我收到一个值错误
- function - 如何使用命令切换到终端普通模式?
- firebase - Web 应用程序的 Firebase 动态链接
- sql - MSSQL 选择父母 ID 值
- android - 如何在android中的图层列表(我没有png)中显示文本而不是位图中的图像