【问题标题】:Does count() on Spark mean that all data is already available in memory to be processed?Spark 上的 count() 是否意味着所有数据都已在内存中可供处理?
【发布时间】:2020-11-17 06:52:21
【问题描述】:

我的数据场景如下:

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

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

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql


    【解决方案1】:

    当您执行count() 时,尚未加载任何内容,这是一个将触发数据处理的操作。

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-03-16
      • 1970-01-01
      • 2020-07-29
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多