首页 > 解决方案 > Spark 上的 count() 是否意味着所有数据都已在内存中可供处理?

问题描述

我的数据场景如下:

  1. 使用 PySpark 使用 JDBC 从数据库中读取数据框中的数据
  2. 我进行 count() 调用以查看记录数并“知道”数据加载何时准备就绪。我这样做是为了了解潜在的瓶颈。
  3. 写入 s3 中的文件(在同一区域)

所以,我的目标是准确知道何时加载所有数据库/表数据,这样我就可以推断当工作变慢时读取或写入数据是否存在问题。在我的第一次尝试中,我可以非常快速地获得记录数(在作业运行 2 分钟后),但我的猜测是执行 count() 并不意味着数据已全部加载(在内存中)。

标签: apache-sparkpysparkapache-spark-sql

解决方案


当您什么都count()没有加载时,这是一个将触发数据处理的操作。

如果您有这样一个简单的逻辑计划:

spark.read(..)
.map(..)
.filter(..)
...
.count()

一旦你调用一个动作,数据库就会被加载(在这个例子中count


推荐阅读